2016-08-15 73 views
-3

我想知道是否可以使用rand()函数在2个变量之间随机选择。说我有thing1和thing2,rand()可以为我选择其中的一个吗?使用rand()选择2个或更多变量()

我当前的代码只是使用RAND()来生成一个随机数,如果它的奇怪然后我说thing1如果即使这样thing2但如果我添加thing3那么它不会工作..

+1

你这样做的方式正是如何做到这一点。 – ckruczek

+0

您是否成功选择了2个变量? –

+0

如果变量都是相同的类型,那么最好使用一个数组而不是N个不同的变量;你可以将rand()的结果映射到'[0..N-1]'(使用链接问题的接受答案中描述的方法),其中'N'是数组中元素的数量。 –

回答

0

假设你有n东西。首先,生成一个范围为0(k*n)-1的随机数,其中k是一个正整数。然后,将生成的数字除以k。你会得到一个从0n-1的号码。对东西1,1映射0到thing2,依此类推,直到012,到东西n

或者甚至更简单,只需生成一个从0n-1的随机数,然后按照上述方法进行映射。

1

rand函数返回0RAND_MAX之间的数字。包括的。

将此范围划分为X个子范围,其中X是您拥有的“变量”的数量。如果返回值在第一个子范围内,请使用第一个“变量”。如果返回的值在第二个子范围内,则选择第二个变量。等


您还可以使用模运算来获得从0到X,其中X又是“变量”的数量范围内的值就搞定了。然后使用这个单个数字来选择“变量”(例如,通过将它用作数组中的索引)。

这种使用模数的方法并不完美。见例如this old answer为什么和更好的方式。