gpt4 book ai didi

c# - 如何仅从字符串数组中选择一个随机字符串一次

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:22 24 4
gpt4 key购买 nike

我正在尝试用 C# 制作 Hangman,在游戏开始时你需要猜一个词,这样游戏就不会无聊,你可以猜很多词(一次只能猜一个)。但是当你开始一个新游戏时,你不会得到一个你已经猜到的词。所以我必须选择一个我还没有选择的随机字符串。

我尝试了多种方法来解决这个问题,但都没有成功。

方法#1:

我在这里运行 NewWord 函数,然后将 numberOfTries 加 1。

string[] wordArr = { "PROGRAMMERING", "CSHARP", "STOL", "ELEV", "VISUAL", "STUDIO" };
int numberOfTries = 0;
int randomNumber = -1;


protected string NewWord()
{
if (!(numberOfTries >= wordArr.Length))
{
randomNumber = RandomNumberFromTo(0, (wordArr.Length - numberOfTries));

ChangeWord(((wordArr.Length - numberOfTries)-1), randomNumber);

return wordArr[(randomNumberl)];
}
else
{
return "There are no more new words!! :(";
}
}


private int RandomNumberFromTo(int NumberA, int NumberB)
{
System.Threading.Thread.Sleep(2);
Random minRandomGenerator = new Random();
System.Threading.Thread.Sleep(3);
return minRandomGenerator.Next(NumberA, NumberB);
}



protected void ChangeWord (int NumberA, int NumberB)
{
string cashe1 = wordArr[NumberA];
wordArr[NumberA] = wordArr[NumberB];
wordArr[NumberB] = cashe1;
return;
}

我在 StackOverflow 上找到了方法 #2,但没有用。

这里我还运行了 NewWord 函数,然后将 numberOfTries 加 1。

string[] wordArr = { "PROGRAMMERING", "CSHARP", "STOL", "ELEV", "VISUAL", "STUDIO" };       
int numberOfTries = 0;
Random random = new Random();
protected string NyttOrd()
{
if (!(numberOfTries >= wordArr.Length))
{
var names = new List<string> { "PROGRAMMERING", "CSHARP", "STOL", "ELEV", "VISUAL", "STUDIO" };

System.Threading.Thread.Sleep(3);
int index = random.Next(names.Count);
var name = names[index];
names.RemoveAt(index);
return name;
}
else
{
return "There are no more new words!! :(";
}
}

我还尝试了一个版本,其中我有两个不同的数组,一个是 Int-Array,第二个是 String-Array。它真的很乱而且没有用。

我对 C# 也很陌生,我只知道基础知识,例如 +-/*、转换、函数和数组。

最佳答案

从概念上讲,您要么跟踪已使用的字符串,要么在使用时从可选字符串列表中删除字符串。

要实现第一种方法,你可以保留一个你已经使用过的字符串的哈希表,当拉出一个新字符串时——看看它是否存在于哈希表中(如果是,选择另一个,直到一个“新的” "字符串被选中)。

要实现第二种方法,只需在选择时从列表中删除您选择的字符串。

关于c# - 如何仅从字符串数组中选择一个随机字符串一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121646/

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