【发布时间】:2016-02-17 14:31:36
【问题描述】:
编辑:这与随机数字无关。当我尝试这样做时,我得到的只是数字,而不是我的字符串。有人至少可以解释一下 Fisher-Yates-shuffle 或它是什么,如果它确实适用于句子字符串,它会在我的情况下起作用吗?因为我不明白。。我不能是唯一一个不明白的人吗?
我有一个要随机化的字符串数组。我想要三个不一样的随机字符串,但我在网上找到的所有内容都是数字或另一种语言。目前我的字符串是随机的,但有时我会得到相同的字符串,例如:“在树后面,在树后面,在树后面”。
所以它应该像 randomHiding1 != randomHiding 2 && randomHiding3; (我知道那不是“真正的代码”,但只是为了让你明白我的意思)
这是我在这里的第一篇文章,所以我希望可以问这个问题,因为我找不到任何人询问关于随机化“句子字符串”的问题,而不仅仅是“abcdefg ....”或数字。这是我的代码。提前致谢!
Random random = new Random();
// strings with hiding spots
string[] hidingSpot = {
"in a ditch",
"up in a tree",
"behind a stone",
"in a hole in the ground",
"behind a tree",
"in the shadows" };
int hidingChoice1 = random.Next(hidingSpot.Length);
int hidingChoice2 = random.Next(hidingSpot.Length);
int hidingChoice3 = random.Next(hidingSpot.Length);
string randomHiding1 = hidingSpot[hidingChoice1];
string randomHiding2 = hidingSpot[hidingChoice2];
string randomHiding3 = hidingSpot[hidingChoice3];
顺便说一句,我知道这段代码非常糟糕,而且过长,但我对数组和列表还是很陌生,所以我的第一要务是获得有效的代码,而不是短代码等。所以我不需要有关阅读文档的提示,因为我经常这样做,但是由于个人原因,我很难记住 atm 的内容。我希望这是有道理的。
【问题讨论】:
-
哦,看,这是我对副本的回答。 stackoverflow.com/a/7913534/659190
-
但那些是数字?它仍然工作吗?因为当我尝试类似的事情时,我得到的只是随机数,而不是我的字符串。
-
@paupau 阅读generics。泛型意味着无论你是随机化字符串、整数、日期还是其他任何东西,答案都不会改变。
-
就像我在文本中写的那样,我无法很好地记住/理解文档。它太重了。我认为有人可以用“正常”的词简单地解释一下,而不是像文档那么复杂?
-
@paupau 尝试提供答案中的代码。你会发现你可以传入一个字符串数组——当你这样做时,编译器会将方法中的
T类型替换为string。然后,您可以从随机数组中取出前 n 个项目。还有很多其他关于泛型的教程值得一读。