gpt4 book ai didi

创建随机数

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

这是我的第一个问题,我正在制作一个小游戏,为了分配角色,我需要随机数。我有这个代码,但是这些数字可能不重复吗?谢谢。

void giveroles() {
srand(time(NULL));
int r = rand() % i + 1;
switch ( r ) { /* ... */ }
}

最佳答案

如果您想随机分配一小组数字,而不是随机生成它们,请创建所需数字的列表,然后随机化列表的顺序(遍历列表,随机交换条目)。

例如:

int cards[52];
for(int i = 0 ; i < 52 ; i++)
{
cards[i] = i;
}
for(int i = 0 ; i < 1000 ; i++)
{
int r1 = rand()%52;
int r2 = rand()%52;
int t = cards[r1];
cards[r1] = cards[r2];
cards[r2] = t;
}
for(int i = 0 ; i < 52 ; i++)
{
printf("%d\n", cards[i]);
}

为了完整起见,有人指出以这种方式进行洗牌是有偏见的。这是一个应该没有偏见的变体:

cards[0] = 0;
for(int i = 1 ; i < 52 ; i++)
{
int r = rand() % (i+1);
cards[i] = cards[r];
cards[r] = i;
}

(需要进一步注意的是,取rand()的模数也很可能会出现偏差,因为rand()的范围不会是偶数倍)

关于创建随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010916/

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