【发布时间】:2015-05-27 13:24:56
【问题描述】:
假设我有一个 Windows 窗体的代码,当您按下按钮时会生成问候语。
string[] Greetings = new string[] { "Hi", "Hello", "Howdy!", "Hey" };
string[] Smilies = new string[] {";)", ":)", "=)", ":-)" };
Random rand = new Random();
string Greet = Greetings[rand.Next(0, Greetings.Length)];
string Smile = Smilies[rand.Next(0, Smilies.Length)];
TextBox.Text = Greet + " " + Smile;
Clipboard.SetText(TextBox.Text);
如果我想以 X% 的概率添加表情符号怎么办。这样它们就不会一直出现,而是有机会我在代码中设置?有什么好的方法吗?
我想到了这样的事情--
public void chance (string source, int probability)
{
Random chanceStorage = new Random();
if (probability >= chanceStorage.Next(0, 100))
TextBox.Text = source;
}
然后
TextBox.Text = Greet;
chance("_" + Smile, X);
这是最优的吗?
【问题讨论】:
-
const int percentageValue = 25; double percentage = (double)percentageValue / 100; if (rand.NextDouble() <= percentage) { \\ do stuff } -
将尽可能多的 String.Empty 值添加到您的 Smilies 数组中,直到达到没有您喜欢的表情的概率。
-
@Corak 有一个很好的答案(如果它是一个答案)。
-
为什么不将表情符号长度除以概率并使用该商生成随机数?如果生成的数字在表情符号的长度范围内,则使用笑脸,否则不使用笑脸。因此,如果您的概率为 25%,4 / 0.25 = 16,您将生成一个 0 - 15 的随机数,让您有 25% 的机会使用笑脸。
-
@ryanyuyu - 完全未经测试,所以我不能“确定”将其作为答案。
标签: c# arrays probability