Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Ios 如何生成4个随机数,这4个数的和必须是100_Ios_Objective C - Fatal编程技术网

Ios 如何生成4个随机数,这4个数的和必须是100

Ios 如何生成4个随机数,这4个数的和必须是100,ios,objective-c,Ios,Objective C,我想得到4个不同的随机数,它们的总数必须是100(rN1+rN2+rN3+rn4=100)我认为,这是最简单的方法: 1。生成3个介于1到100之间的随机数 2.计算总和 3.并生成第四个数字作为-将计算出的和与100之间的差值相加。如下所示: BOOL flag = false; int r,r1,r2,r3; while (!flag) { r = arc4random_uniform(100); r1 = arc4random_unifo

我想得到4个不同的随机数,它们的总数必须是100(rN1+rN2+rN3+rn4=100)

我认为,这是最简单的方法:

1。生成3个介于1到100之间的随机数

2.计算总和

3.并生成第四个数字作为-将计算出的和与100之间的差值相加。

如下所示:

BOOL flag = false;
    int r,r1,r2,r3;
    while (!flag) {
         r = arc4random_uniform(100);
         r1 = arc4random_uniform(100);
         r2 = arc4random_uniform(100);
         r3 = arc4random_uniform(100);
        if (r+r1+r2+r3 == 100) {
            flag = true;
        }

    }
    NSLog(@"%d    %d    %d    %d",r,r1,r2,r3);
NSInteger r1, r2, r3, r4;
r1 = arc4random_uniform(96);
r2 = arc4random_uniform(97-r1);
r3 = arc4random_uniform(98-r1-r2);
r4 = 100-r1-r2-r3;

提示:仅从0-100生成3个随机数,如果总数3大于100,请再次生成,第4个是100减去其他3:D。我想听听更好的主意来检查这一点。它可能会帮助你找到一个合适的算法。如果前三个数的和是115呢?再生成一次。。。表示检查天气总和是否小于100,如果不再次生成。。或者我们也可以取负值,在重复的情况下,它可能需要太长的时间来执行,但是如果我们接受负数,那么就可以了。但公认的答案是有一个伟大的逻辑。但是谢谢你的建议,试试看……这样的情况发生的机会很小,cpu不得不生成太多次,完全没有效率上面给出了一些时间0,但是,所有数字必须大于0,总数是99,但我想必须是100。你可以使用
unsigned int r1,r2,r3,r4来消除警告