【发布时间】:2014-03-18 15:05:51
【问题描述】:
我正在尝试使用随机数组列表,这是代码
private static string getSearchEngine()
{
ArrayList url = new ArrayList();
url.Add("www.google.com");
url.Add("www.bing.com");
url.Add("www.yahoo.com");
Random rnd = new Random();
int i = rnd.Next(0, url.Count);
return url[i].ToString();
}
private static void DoMore_Functionality_Using_engName()
{
for(int i = 0; i < 300; i++)
string engName = getSearchEngine();
}
我希望每个搜索引擎只被使用 100 次。如果我使用上面的代码,随机发生器可以选择其中任何一个超过 100 次。我该如何修改代码来做到这一点?
谢谢 拉什米
【问题讨论】:
-
所以简而言之:应该使用随机搜索引擎,并且应该总共使用 100 次,例如:google 50、bing 25 和 yahoo 25。或者它们都应该执行 100 次,所以一共300个?
-
@MaxMommersteeg:我的阅读时间会晚一些。他们希望每个搜索引擎只被使用 100 次。
-
你有3个引擎,你想从中随机生成300个引擎,每个最多100个?我想我有一个非随机的解决方案给你......
-
如果您每次需要一个时都使用
i % 3th 引擎怎么办?虽然不是随机的,但这会很好地分布。 -
创建一个包含 300 个
ints 的列表,其中包含 100 个 0、100 个 1 和 100 个 2。然后打乱该列表(例如,使用 Fisher-Yates)。现在遍历该列表,在每次迭代时将引擎置于索引处。