我使用随机浏览列表我喜欢这样:
var oServer = new SmtpServer("");
var random = new Random();
var randomIndex = random.Next(list.Count());
var socks = list[randomIndex];
oServer.SocksProxyServer = socks.IpAddress.ToString();
oServer.SocksProxyPort = socks.Port;
我希望如果选择了值,则下次不再选择。我希望它选择另一个值。
我应该做什么?
答案 0 :(得分:2)
如果您无法从list
移除,请从possibleIndexes
移除
private static random = new Random();
...
List<int> possibleIndexes = Enumerable
.Range(0, list.Count())
.ToList();
...
int idx = random.Next(possibleIndexes.Count());
int index = possibleIndexes[idx];
possibleIndexes.RemoveAt(idx);
var socks = list[index];
...
答案 1 :(得分:1)
如果您不想再次使用该项目,请从列表中删除该项目:
var socks = list[randomIndex];
list.RemoveAt(randomIndex);
答案 2 :(得分:0)
如果您不想丢失原始列表中的数据,请先将列表复制到另一个列表,然后从您的副本列表中删除项目
var copyList=new List<yourListType>();
copyList.AddRange(list);//copy form your orginal list
var socks = copyList[randomIndex];
copyList.RemoveAt(randomIndex);
或者您可以生成唯一的随机数
List<int> randomNumbers = new List<int>(list.Count());
do
{
randomIndex = random.Next();
} while (randomNumbers.Contains(randomIndex));
randomNumbers.Add(randomIndex);
var socks = list[randomIndex];