gpt4 book ai didi

c - 使用rand函数随机赋值

转载 作者:行者123 更新时间:2023-11-30 15:11:28 26 4
gpt4 key购买 nike

我正在做作业。我将 rand 函数放入循环中。

int counter = 1;

while ( counter <= 10 ){
variable1 = rand() % 5 + 1;
printf("%d", variable);
counter = counter + 1;

在此代码中,rand 函数为名为variable1 的变量分配不同的值,但有时它会分配相同的值,因为rand 函数的范围很窄。我如何执行 rand 函数,在每次循环返回时为变量分配不同的数字。

最佳答案

虽然rand() 不是最好的随机函数,但它应该可以满足许多工作的需要,当然也可以满足大多数家庭作业的需要。从随机函数中连续两次返回相同的数字是完全有效的——因为该函数不应该对先前返回的值有任何内存。

理解这一点的最好方法是通过抛硬币的例子。每次抛硬币都是随机的,并且硬币没有上一次抛硬币的内存,因此有可能连续抛硬币 32 次,并且它们都会出现正面——如果每次抛硬币都是您已创建 32 位整数中的一位二进制值整数零。

然而,人类倾向于认为(直觉)对于随机函数来说,多次返回相同的值是“错误的”——但我们的直觉在这方面是错误的。

如果您出于某种原因确实不想从一个循环到下一个循环重复该数字,那么无论您使用哪种随机函数,您都需要对其进行编程 - 因为任何 随机函数能够两次返回相同的值。

所以像这样的东西就可以了;

int counter = 1;
int prevValue = -1;

while ( counter <= 10 ){
do {
variable1 = rand();
} while (variable1 == prevValue);
prevValue = variable1;

variable1 = variable1 % 5 + 1;
printf("%d", variable);
counter = counter + 1;
}

请注意,这仍然能够两次打印相同的值,因为 10 和 15 在 %5 之前是不同的值,但在之后是相同的。如果您希望考虑 %5,这样 printf 就不会连续两次打印相同的值,则需要在循环内移动 %5 .

关于c - 使用rand函数随机赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35634057/

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