如果我有一個包含以下字符串列表:如何隨機得到一個集合的字符串,但在集合的開始喜歡串
"a","b","c","d","e","f","g","h","i","j","k","l","m","n"
什麼是獲得一個隨機字符串的最佳方式,但加權的方式會更可能得到「a」而不是「n」?
如果我有一個包含以下字符串列表:如何隨機得到一個集合的字符串,但在集合的開始喜歡串
"a","b","c","d","e","f","g","h","i","j","k","l","m","n"
什麼是獲得一個隨機字符串的最佳方式,但加權的方式會更可能得到「a」而不是「n」?
選擇兩個隨機數字並選擇較低的一個。
Random rnd = new Random();
var randomItem = list[Math.Min(rnd.Next(list.Count+1), rnd.Next(list.Count+1))];
而且我勸你自己確定每個項目的所產生的相對概率。
如果你想出了一個更嚴格的'最好'的定義,那麼這個答案可能不適合它。
得到一個隨機字符串的最好方法是什麼,但加權的方式是更容易得到「a」而不是「n」?
你應該澄清你願意得到的分配。 「更可能」還不夠清楚。
例如,你可以使用:
for i in 1..size(array) do
if random(0.0,1.0) < k then
return array[i]
end for
return array[i]
但對於k
不同的值,你會得到很多不同的行爲。
對於k=1.0
,您將始終獲得第一個元素。對於k=1/size(array)
,您會得到一個隨機元素。
應該是dup [加權隨機](http://stackoverflow.com/search?q= [c%23]加權+隨機)問題。 –
「a」與「n」相比有多大可能性? 'return'a「;'滿足您的要求:P – Blorgbeard
這裏有一個答案應該足以讓您進行修改:http://stackoverflow.com/a/7538795/3317555 – bubbinator