首页 > 解决方案 > 我可以为 rand() 函数指定条件吗?

问题描述

我想生成一个在 1 到 6 范围内的随机数(我知道怎么做),但不等于 4 个其他变量(例如,它们的名称是“num1”、“num2”、算法中的“num3”和“num4”)。我可以这样做吗?如何?

标签: crandomrandom-seed

解决方案


这个问题(目前)不清楚,但从评论中的澄清来看:

您想要四个变量,每个变量都有一个介于 1 和 6(含)之间的随机值,但没有重复?

假设实际上您需要 5 个变量,因为问题指出:

不等于4 个其他变量

那么因为您需要来自 6 种可能性的 5 个唯一变量。最简单的解决方案是随机选择一种可能性来省略。此外,存储 5 个相同类型的值的明智方法是使用单个数组变量而不是五个单独的变量 - 它使代码更简单。

int num[5] ;
int omit = 1 + rand() % 6 ;
for( int i = 0, j = 0; i < sizeof(num) / sizeof(*num); i++, j++ )
{
    if( i != omit ) num[j] = i ;
}

请注意,1 + rand() % 6即使rand()完全随机,表达式也会对某些值产生偏差。如果这是一个问题,读者可以做一个练习。


推荐阅读