我有一个listBox,我希望每次都能从我的列表中显示随机项目。
var random = new Random();
int index = random.Next(listBox1.Items.Count);
Console.Writeline(listBox1.Items[index].toString());
答案 0 :(得分:1)
var random = new Random();
int index = random.Next(0, listBox1.Items.Count);
Console.Writeline(listBox1.Items[index].toString());
答案 1 :(得分:1)
var random=new Random();
int index=random.Next(0,listBox1.Items.Count);
基本上random.Next(min,max)需要min和max值,以便在给定范围之间生成随机数。 你也应该提供范围。
Console.Writeline(listBox1.Items[index].toString());
答案 2 :(得分:0)
我只是使用你的代码@ilyas它正常工作,坚持下去,只需使用
if (typeof baseURL !== 'undefined')
{
Vue.axios.defaults.baseURL = baseURL;
}
而不是
MessageBox.Show(listBox1.Items[index].ToString());
我假设您正在创建WinForm应用程序
答案 3 :(得分:0)
您的代码似乎没问题。但是如果你在一个紧凑的循环中使用它,它会给你总是相同的数字。也许这是你的问题?
每次执行
new Random()
时,都会使用时钟进行初始化。
这意味着在紧密循环中,您可以多次获得相同的值。您应该保留一个Random实例并继续在同一个实例上使用 Next 。
//Define your random class with a static field
public static class RandomAccessor {
// Static field for your Random to create one instance only
private static readonly Random random = new Random();
// Object to lock sync on
private static readonly object syncLock = new object();
// Method to generate random number
public static int RandomNumber(int max)
{
lock(syncLock) {
// returns a random non-negative number less that max
return random.Next(max);
}
}
}
然后在你的代码中使用它:
int index = RandomAccessor.RandomNumber(listBox1.Items.Count);
Console.Writeline(listBox1.Items[index].toString());
询问您是否有任何问题。
答案 4 :(得分:0)
这是一个如何运作的基本示例。
using System;
using System.Windows.Forms;
namespace SimpleFormsApplication
{
public partial class Form1 : Form
{
private readonly Random _random = new Random();
public Form1()
{
InitializeComponent();
}
private void button_random_Click(object sender, EventArgs e)
{
int randomIndex = _random.Next(listBox1.Items.Count);
var randomItem = listBox1.Items[randomIndex];
MessageBox.Show($"Random item at index {randomIndex} is {randomItem}");
}
}
}
请在这里查看https://msdn.microsoft.com/en-us/library/system.random(v=vs.100).aspx并查看那里的示例。