First off: you have a bad assumption. Processor affinity in Linux is set to be "let this process use all CPU's". This means that the process will bounce around from CPU to CPU - it is not required not stay on just one CPU for the lifetime of the process.
sched_set_affinity() can be used to alter the bitmap in the task_struct's cpus_allowed bitmask - force the process to run on just one cpu.
Once you know which processor number to use, you can call some thing like this to seed the PNRG: Don't know whether you are using rand() or not, this uses srand. Pass it the cpu number you selected.
Code:
#include <stdlib.h>
#include <time.h>
int foo(const long processor_number)
{
struct timeval seed;
struct timezone tzp;
int retval=0;
if(!gettimeofday (&seed, &tzp))
{
srand(seed.tv_usec/processor_number);
retval=1;
}
return retval;
}