线程产生相同的随机数?

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)

Luk*_*uke 5

如果线程在同一时间产生随机数,则将随机数生成器与时间一起播种将为您提供相同的随机数。您可以只加上时间加上线程号或类似的内容。

或者,如Dave所建议的,您可以在线程外仅播种一次。