gpt4 book ai didi

c# - 仅在唯一时返回随机数

转载 作者:行者123 更新时间:2023-12-01 21:13:19 27 4
gpt4 key购买 nike

今天我的大脑正在融化,我不知道如何编写这段简单的代码。 numberList 是一串用逗号分隔的数字,如“2、34、10”等。当我请求一个随机数时,我需要检查该字符串是否有该数字,如果有,我想继续请求一个随机数,直到随机数肯定不在字符串中。我无法想象我会做什么样的循环来让它工作:

Random r = new Random();

public int RandomPos(int max) {
int i;
do {
i = r.Next(max) + 1;
}
while (!numberList.Contains(i.ToString()));

return i;
}

最佳答案

我只是用文本而不是代码来解释,因为我现在懒得写代码:

  1. 使用 String.Split 将列表分解为数组,然后(如果需要)将其解析为整数。
  2. 使用 Enumerable.Range(0, max).ToArray() 创建您可以选择的所有数字的列表。
  3. 从第二个列表中减去第一个列表。
  4. 从最终列表中随机选择一个元素。

这样做的好处是,您不需要不断随机选择事物并在可能无限但并非真正实用的循环中重试。

编辑:这是一些代码

string[] invalid = numberList.Split(", ");
var list = Enumerable.Range(0, max).Where(x => !invalid.Contains(x.ToString())).ToArray();
return list[r.Next(list.Count)];

关于c# - 仅在唯一时返回随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605852/

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