C++随机数1-9
我需要从1到9的不带0的随机数C++随机数1-9,c++,C++,我需要从1到9的不带0的随机数 //numbers 0 to 9 int iRand = rand() % 10; 但我需要1到9分钟 谢谢。仅此而已: int iRand = (rand() % 9) + 1; 仅此而已: int iRand = (rand() % 9) + 1; 尝试: 它的工作原理是从0到8取一个随机数,然后再加上一个,尽管我在代码中以相反的顺序编写了这些操作——这首先取决于个人偏好 请注意,%的优先级高于+,因此不需要括号,但可以提高可读性。请尝试: 它的工作原理
//numbers 0 to 9
int iRand = rand() % 10;
但我需要1到9分钟
谢谢。仅此而已:
int iRand = (rand() % 9) + 1;
仅此而已:
int iRand = (rand() % 9) + 1;
尝试:
它的工作原理是从0到8取一个随机数,然后再加上一个,尽管我在代码中以相反的顺序编写了这些操作——这首先取决于个人偏好
请注意,%的优先级高于+,因此不需要括号,但可以提高可读性。请尝试:
它的工作原理是从0到8取一个随机数,然后再加上一个,尽管我在代码中以相反的顺序编写了这些操作——这首先取决于个人偏好
请注意,%的优先级高于+,因此不需要括号,但可以提高可读性。如何
int iRand = (rand() % 9) + 1;
doh被秒击败了怎么样
int iRand = (rand() % 9) + 1;
doh被秒打败了你知道如何得到[0,x]范围内的随机整数,对吗?那就是:
rand() % (x + 1)
在您的情况下,您已将x设置为9,得到兰特%10。那么,如何操纵一个范围以达到1-9呢?因为0是这个随机数生成器方案的最小值,我们知道我们需要加上一个,以获得最小值:
rand() % (x + 1) + 1
现在得到范围[1,x+1]。如果假设为[1,9],那么x必须是8,给出:
rand() % 9 + 1
这就是你应该考虑这些事情的方式。你知道如何得到[0,x]范围内的随机整数,对吗?那就是:
rand() % (x + 1)
在您的情况下,您已将x设置为9,得到兰特%10。那么,如何操纵一个范围以达到1-9呢?因为0是这个随机数生成器方案的最小值,我们知道我们需要加上一个,以获得最小值:
rand() % (x + 1) + 1
现在得到范围[1,x+1]。如果假设为[1,9],那么x必须是8,给出:
rand() % 9 + 1
这就是您应该如何看待这些事情。要初始化随机数生成器,请调用srandtime0;然后,要将整数x设置为介于低包容和高排斥之间的值,请执行以下操作:
int x = int(floor(rand() / (RAND_MAX + 1.0) * (high-low) + low));
如果高和低都是非负的,则不需要地板
对随机数使用模数%是不可取的,因为低阶位的变化不大,因此会发现非常弱的分布。要初始化随机数生成器,请调用srandtime0;然后,要将整数x设置为介于低包容和高排斥之间的值,请执行以下操作:
int x = int(floor(rand() / (RAND_MAX + 1.0) * (high-low) + low));
如果高和低都是非负的,则不需要地板
对随机数使用模%是不可取的,因为低阶位的变化不大,所以会发现一个非常弱的分布。无论选择了什么答案,基于模的测距都是有偏差的。你可以在网上找到。因此,如果您真的关心这一点,那么您必须做更多的事情,假设arc4random返回一个4字节的整数:
#define NUMBER 9.0
#define RANDOM() (((int)(arc4random() / (float)0xffffffff * (float)NUMBER) + 1) % (NUMBER + 1))
我把正确的语法留给你,因为你听起来像是一个非常有能力的开发人员。不管答案是什么,基于模的测距是有偏见的。你可以在网上找到。因此,如果您真的关心这一点,那么您必须做更多的事情,假设arc4random返回一个4字节的整数:
#define NUMBER 9.0
#define RANDOM() (((int)(arc4random() / (float)0xffffffff * (float)NUMBER) + 1) % (NUMBER + 1))
我把正确的语法留给您,因为您听起来像是一个非常有能力的开发人员。我的情况是,我不需要随机数的均匀分布。但是谢谢你的提示;我不需要随机数的均匀分布。但是谢谢你的提示;好吧,我很年轻,需要时间…好吧,我很年轻,需要时间。。。