gpt4 book ai didi

c - C 中两个设定值之间的随机整数的生成

转载 作者:行者123 更新时间:2023-11-30 17:45:11 24 4
gpt4 key购买 nike

我希望在 C 中实现类似于 python random.randint 的东西。

我会做这样的事情:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
srand(time(NULL));

int randInt(int lBound, int uBound){
return (rand()%(uBound-lBound+1))+lbound;
}

但如果 R​​AND_MAX 不是 uBound 的倍数,则分布会稍微倾斜。

有没有更好的快速但肮脏的方法?

最佳答案

如果避免倾斜很重要,那么您需要执行类似的操作。

int randInt(int lBound, int uBound){
int rangesize = uBound-lBound+1;
if ((rangesize - 1 > RAND_MAX) || (rangesize < 0) || (lBound > uBound)) {
// run in circles, scream and shout
}
int limit;
if (rangesize < RAND_MAX) {
limit = RAND_MAX - (((RAND_MAX % rangesize) + 1) % rangesize);
} else {
limit = RAND_MAX;
]
int rv;
do {
rv = rand();
} while (rv > limit);
return rv % rangesize + lbound;
}

关于c - C 中两个设定值之间的随机整数的生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19706637/

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