生成随机数而不连续重复

oop*_*ogy 8 random objective-c

如何从0到4生成随机整数,以便连续两次生成相同的数字?例如,如果3是第一次生成的数字,则0,1,2,4将是第二次随机生成的可能数字.如果第二次产生2,那么0,1,3,4将是第三次随机产生的可能数字,依此类推.

Hot*_*cks 7

int oldrand = <prior random number>;
int adder = randomNumberGenerator() % 4;
int newrand = (oldrand + adder + 1) % 5;
Run Code Online (Sandbox Code Playgroud)

  • @oopology-您有一个数字0 .. 4.您想要另一个在相同范围内的数字,而不仅仅是不完全相同的数字。因此,请在第一个数字前加上1到4之间的任何数字,然后,如果加法运算溢出,请“将其环绕”。因此,如果您的第一个数字是3,并且选择了一个随机值2,则将3 + 2 + 1相加得到6,该数字大于范围。但是5个换行为0,6个换行为1,因此您的结果是1。 (2认同)