Sal*_*kci 2 c random multithreading pthreads
我试图为每个要使用的线程生成随机数,但是所有线程都生成相同的数字。
每次运行程序时,数字都会更改,但是对于给定的运行,所有线程都会产生相同的数字。
如何为每个线程生成不同的随机数?
void *Customer(void *customer_id)
{
unsigned int iseed = (unsigned int)time(NULL);
srand (iseed);
int rastgele = rand() % 3 + 1;
int *id_ptr,customer_idd;
id_ptr=(int *) customer_id;
customer_idd=*id_ptr;
printf("This is thread : %d %d \n",customer_idd,rastgele);
pthread_exit(NULL);
}
Run Code Online (Sandbox Code Playgroud)
如果线程在同一时间产生随机数,则将随机数生成器与时间一起播种将为您提供相同的随机数。您可以只加上时间加上线程号或类似的内容。
或者,如Dave所建议的,您可以在线程外仅播种一次。