gpt4 book ai didi

c - 每次 C 客户端运行时生成一个唯一的随机数

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:23 24 4
gpt4 key购买 nike

我正在尝试用 C 语言编写一个客户端/服务器应用程序,其中每个客户端向服务器发送一个特定值(随机生成的 1 到 50 之间的数字)。但问题是每个客户端向服务器发送相同的随机数。

这是客户端的部分代码:

srand(time(NULL));
id=rand()%50 + 1;

我确实理解,因为每次客户端运行时种子都设置为相同的值,这可能就是为什么也有相同随机数的原因。

任何人都可以提出纠正此问题的方法吗?

最佳答案

试试这个:

srand(clock());

time() 函数使用 精度。如果所有 4 个客户端执行时几乎没有间隔完全并行(即所有客户端在 time() 返回的同一秒内有效运行),这可能不够细粒度)。 clock() 函数提供了更好的时间分辨率。

值得注意的是,C — 不像现在的大多数语言 ;) — 几乎没有启动开销(与运行时管理的语言等相比)。因此,每个程序在被您的 shell 脚本调用后几乎立即开始执行。

备选方案。另一种解决方案是完全忘记使用时间/时钟作为种子。只需在您的脚本中为这 4 个实例中的每一个实例传递一个唯一整数 作为命令行参数,然后使用它(作为种子或客户端 ID)。

关于c - 每次 C 客户端运行时生成一个唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com