Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++随机数1-9_C++ - Fatal编程技术网

C++随机数1-9

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取一个随机数,然后再加上一个,尽管我在代码中以相反的顺序编写了这些操作——这首先取决于个人偏好 请注意,%的优先级高于+,因此不需要括号,但可以提高可读性。请尝试: 它的工作原理

我需要从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取一个随机数,然后再加上一个,尽管我在代码中以相反的顺序编写了这些操作——这首先取决于个人偏好

请注意,%的优先级高于+,因此不需要括号,但可以提高可读性。

请尝试:

它的工作原理是从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))

我把正确的语法留给您,因为您听起来像是一个非常有能力的开发人员。

我的情况是,我不需要随机数的均匀分布。但是谢谢你的提示;我不需要随机数的均匀分布。但是谢谢你的提示;好吧,我很年轻,需要时间…好吧,我很年轻,需要时间。。。