C++ 试图一次取一个随机数字
我不熟悉cpp编程,也不熟悉stackoverflow 我有一个简单的情况和一个需要花费更多时间来解决的问题,所以我想我应该在这里问一下 我想一次从C++ 试图一次取一个随机数字,c++,string,random,int,C++,String,Random,Int,我不熟悉cpp编程,也不熟悉stackoverflow 我有一个简单的情况和一个需要花费更多时间来解决的问题,所以我想我应该在这里问一下 我想一次从rand()中取一个数字。我已经设法去掉了这个数字,但是我不能将它转换成我需要的int,因为它被用作数组索引 有人能帮忙吗?我会很感激的 此外,如果有人有一个很好的解决方案来获得均匀分布的10进制随机数,我也希望如此。。。当然,兰特马克斯也不全是9,我们没有 KTM您可以使用模运算符来获取兰德返回的数字 int digit = rand()%10;
rand()
中取一个数字。我已经设法去掉了这个数字,但是我不能将它转换成我需要的int
,因为它被用作数组索引
有人能帮忙吗?我会很感激的
此外,如果有人有一个很好的解决方案来获得均匀分布的10进制随机数,我也希望如此。。。当然,兰特马克斯也不全是9,我们没有
KTM您可以使用模运算符来获取兰德返回的数字
int digit = rand()%10;
至于你的第一个问题,如果你有一个字符数字,你可以减去“0”的值得到这个数字
int digit = char_digit - '0';
你可以用模运算符得到兰德返回的数字
int digit = rand()%10;
至于你的第一个问题,如果你有一个字符数字,你可以减去“0”的值得到这个数字
int digit = char_digit - '0';
如果你想要一个0到9的迂腐的均匀分布,你可以
rand()
本身是均匀分布的。(并非总是一个好的假设。)rand()
int ran10(void) {
const static int r10max = RAND_MAX - (RAND_MAX % 10);
int r;
while ((r = rand()) >= r10max);
return r%10;
}
如果
RAMD_MAX
为32767,r10max
的值为32760。在32760到32767范围内的任何rand值都将被抛出,并将获取一个新的随机值。如果想要0到9的迂腐的均匀分布,可以
rand()
本身是均匀分布的。(并非总是一个好的假设。)rand()
int ran10(void) {
const static int r10max = RAND_MAX - (RAND_MAX % 10);
int r;
while ((r = rand()) >= r10max);
return r%10;
}
如果
RAMD_MAX
为32767,r10max
的值为32760。在32760到32767范围内的任何rand值都将被抛出,并将获取一个新的随机值。虽然速度不如模算术实现(如rand()%10
)快,但这将返回均匀分布的整数,并避免某些伪随机数生成器中出现的最低有效位的周期性(请参阅)
虽然速度不如模算术实现(如
rand()%10
)快,但这将返回均匀分布的整数,并避免在某些伪随机数生成器中出现最低有效位的周期性(请参阅)
你愿意打破C++11吗?它让您可以使用
std::uniform\u int\u distribution
生成任意范围。您愿意突破C++11吗?它允许您使用std::uniform_int_distribution
生成任意范围。此解决方案假设您愿意接受某些(小)偏差:此解决方案假设您愿意接受某些(小)偏差: