如何在编写C代码时使用随机性?

时间:2012-10-12 21:32:21

标签: c

最近我遇到了一个有趣的C拼图: 我们有一个N节点和M边缘的网络。每个节点包含一些数据包。最初,节点i包含多个数据包。在每个时间步,每个数据包随机选择其中一个邻居并移动到它。我们必须在K个时间步之后找出每个节点的数据包数量。

我在这个问题上面临的主要问题是如何使用概率。 “随机”这个词很令人困惑,并没有向我提出任何逻辑。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用srand()rand()函数。

srand()初始化随机数生成器。典型用法是:

srand(time(NULL));

根据当前时间设置种子。它并非安全随机,但它避免了每次运行程序时获得相同的结果(除非您在非常快速的连续运行两次)。在拨打srand()之前,您应该在执行程序期间仅拨打rand()一次。

rand()函数返回0到RAND_MAX范围内的随机数; RAND_MAX的值可能因系统而异。您可以操纵结果以获得所需范围内的随机数;例如,rand() % 2会为您提供一个值为01的随机数。

comp.lang.c FAQ的第13节涵盖了这一点。

请注意,rand()通常不会生成非常高质量的随机数。为了您的目的,这可能没问题。如果不是,则还有其他特定于系统的方法来生成更好的随机数。