gpt4 book ai didi

objective-c - 如何有效地从 1 到 50 中选择几个唯一的随机数,不包括 x?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:35 25 4
gpt4 key购买 nike

我有 2 个数字,介于 0 和 49 之间。我们称它们为 xy。现在我想得到一些其他数字,它们不是 x 或 y,但也在 049 之间(我使用的是 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));

但这对我来说似乎有点不好,我不知道,我只是想学习成为一个更好的程序员,对于最佳实践来说,最优雅的方法是什么?

最佳答案

你可以使用一个叫做 Fisher-Yates shuffle 的东西.这是一种从某些集合中生成随机排序的值列表的有效算法。您将首先从要从中获取随机值的值列表中排除 N,然后执行洗牌。

关于objective-c - 如何有效地从 1 到 50 中选择几个唯一的随机数,不包括 x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2502386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com