【发布时间】:2017-11-09 23:35:06
【问题描述】:
我正在尝试用 C 编写一个客户端/服务器应用程序,其中每个客户端向服务器发送一个特定值(一个随机生成的 1 到 50 之间的数字)。 但问题是每个客户端都向服务器发送相同的随机数。
这是客户端代码的一部分:
srand(time(NULL));
id=rand()%50 + 1;
我确实理解,因为每次客户端运行时种子都设置为相同的值,这可能就是为什么也有相同的随机数的原因。
任何人都可以提出一个纠正这个问题的方法吗?
【问题讨论】:
-
您是否在每个线程中都调用
srand()?如果是这样,请不要在所有线程开始之前调用它一次。 -
我正在尝试在客户端生成随机数。因此,每次执行新客户端时,srand 函数也会执行。 (我刚刚看到我的问题的前一个标题是错误的并对其进行了编辑。如果让您感到困惑,非常抱歉)
-
每个客户都是他们自己的程序吗?每个程序应该只调用
srand(),一旦它意味着看到你只播种一次的随机数生成器(通常在设置期间)。 -
有一个客户端程序和一个服务器程序。所以为了说得到 4 个客户端,我使用 script.sh 文件执行客户端程序 4 次。每个客户端生成一个随机数并发送到服务器。然后服务器为每个客户端创建一个新线程并接受客户端发送的消息
-
只要不是每个客户端在同一秒同时执行,每个客户端的种子都会不同。
标签: c random numbers client-server unique