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.
int foo(const long processor_number)
struct timeval seed;
struct timezone tzp;
if(!gettimeofday (&seed, &tzp))