C#学习教程:从数组中选取随机字符串string[]names={"image1.png","image2.png","image3.png","image4.png","image5.png"};这可能吗?我在考虑使用returnstrings[random.Next(strings.Length)];但这有可能两次返回相同的字符串。还是我错了?我应该使用其他类似List的东西来实现这一点。欢迎任何反馈。最简单的方法(但对于大型列表来说速度较慢)是使用像List这样的可调整大小的容器并在选择后删除元素。比如:varnames=newList{"image1.png","image2.png","image3.png","image4.png","image5.png"};intindex=random.Next(names.Count);varname=名称[索引];名称.RemoveAt(索引);返回名称;当你的列表为空时,所有值都会被选中。一种更快的方法(特别是如果您的列表很长)是在您的列表上使用洗牌算法。然后你可以一次弹出一个值。它会更快,因为从列表的末尾删除通常比从中间删除快得多。至于洗牌,您可以查看此问题以获取更多详细信息。请尝试以下代码};comments_title.Value=Titles[newRandom().Next(0,Titles.Length)];您可以在第一步中打乱数组,然后简单地遍历打乱的数组。与基于RemoveAt的实现所具有的O(n^2)相比,这具有O(n)的优势。当然,这对于短数组来说并不重要。查看JonSkeet对以下问题的回答,了解随机播放的良好实现(所有订单都同样可能):IsusingRandomandOrderByagoodshufflealgorithm?最好的办法是创建一个重复列表,然后当您随机选择一个字符串时,您可以将它从重复列表中删除,这样您就不能选择它两次。您可以使用的逻辑如下:1)在等于数组长度的范围内选择一个随机整数。您可以使用System.Random类来执行此操作。2)使用该数组索引对应的字符串3)从数组中删除具有该索引的项(使用列表可能更容易)然后您可以再次选择,不会出现相同的字符串。该数组将短一个元素。如果您不想/不能修改原始数组,则需要跟踪使用的数据,最好是在列表中。使用while循环检查它是否未被使用,然后将其添加到“已使用”列表中。//SETLOWERLIMITcmd=newSqlCommand("selectmin(sysid)aslowerlimitfromusers",cs);int_lowerlimit=(int)cmd.ExecuteScalar();下限=_lowerlimit;//SETUPPERLIMITcmd=newSqlCommand("selectmax(sysid)asupperlimitfromusers",cs);int_upperlimit=(int)cmd.ExecuteScalar();上限=_上限;//生成从下限到上限的随机数Randomrnd=newRandom();intrandomNumber=rnd.Next(下限,上限+1);//显示输出txt_output.Text+=randomNumber;使用以下实用方法publicstaticclassListExtensions{publicstaticTPickRandom(thisListenumerable){intindex=newRandom()。接下来(0,可枚举的。计数());返回可枚举[索引];}}然后拨下面的方法以上是C#学习教程:从数组中选择一个随机字符串分享的所有内容,如果对大家有用还需要了解更多关于C#学习教程,希望大家多多付出注意——string[]fruitArray={"apple","orange"};字符串inputString=fruitsArray.ToList().PickRandom();本文收集自网络,不代表立场,如涉及侵权,请点击右侧联系如管理员删除,如有转载,请注明出处:
