Coc*_*ico 3 random objective-c
我有2个数字这是0和49之间让我们给他们打电话x和y.现在我想得到一些不是x或y的其他数字,但也介于0和之间49(我正在使用Objective C,但这更像是一个普遍的理论问题吗?).
我想到的方法是:
int a;
int b;
int c;
do {
a = arc4random() % 49;
} while ((a == x) || (a == y));
do {
b = arc4random() % 49;
} while ((b == x) || (b == y) || (b == a));
do {
c = arc4random() % 49;
} while ((c == x) || (c == y) || (c == a) || (c == b));
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎有点不好,我不知道,我只是想学习成为一名更好的程序员,最佳做法是什么才能做到这一点?
你应该洗牌数字数组(值[0,...,49]在你的情况,你也可以排除你x和y这个数组,如果你已经知道它们的值),然后抓住前N值(无论多少你从洗牌阵列中寻找.这样,所有数字都是该范围的随机数,而不是"之前见过".