我想做一个7位数的随机显示。(刚学几天)但是发现点button后,偶尔会有重复现象。请问如何解决?
namespace numbers
{
public partial class main : Form
{
public main()
{
InitializeComponent();
}
Random ra = new Random();
private void fivebutton_Click(object sender, EventArgs e)
{
int aa,bb,cc,dd,ee,ff,gg;
aa= ra.Next(0, 50);
bb = ra.Next(0, 50);
cc = ra.Next(0, 50);
dd = ra.Next(0, 50);
ee = ra.Next(0, 50);
ff = ra.Next(0, 50);
gg = ra.Next(0, 50);
ftbox1.Text = aa.ToString();
ftbox2.Text = bb.ToString();
ftbox3.Text = cc.ToString();
ftbox4.Text = dd.ToString();
ftbox5.Text = ee.ToString();
ftbox6.Text = ff.ToString();
ftbox7.Text = gg.ToString();
}
7 个解决方案
#1
加个条件
if(Random.Next(i)==Random.Next(y)){...}
#2
请问能详细点吗?你这样只能比较2个不重复的,但是我有这么多7个数字要显示。怎么用if来做条件判断呢?
因为我自己学了几天,不太懂。麻烦你了
因为我自己学了几天,不太懂。麻烦你了
#3
Random ra = new Random(datetime.tostring());
带上当前时间参数。。只要时光不倒流一般不重复。。
带上当前时间参数。。只要时光不倒流一般不重复。。
#4
给一分 真大方...
#5
Random()默认就是使用时间作为随机发生器的种子的,在大量使用随机数的时候,ticks还没来得及改变,现在我们常用的随机发生器都是伪随机数字,是需要种子的,在种子一样时,产生的随机序列是一样的,因此随机数也就不随机了,再每次取随机数之前,我们暂停一毫秒
System.Threading.Thread.Sleep(1);
------------------------------------------------------
example:System.Random random = new Random();
System.Threading.Thread.Sleep(1);
int s = random.Next();
也可以试一试 可以试一试 System.Security.Cryptography.RNGCryptoServiceProvider ,性能就没有 System.random 快了。
System.Threading.Thread.Sleep(1);
------------------------------------------------------
example:System.Random random = new Random();
System.Threading.Thread.Sleep(1);
int s = random.Next();
也可以试一试 可以试一试 System.Security.Cryptography.RNGCryptoServiceProvider ,性能就没有 System.random 快了。
#6
但是我照你这样写,不行哦。说没有TOSTRING这个东西。我晕了
#7
为什么我照抄你的System.Threading.Thread.Sleep(1);这个上去。但是说1前面的(这个标记无效呢?
#1
加个条件
if(Random.Next(i)==Random.Next(y)){...}
#2
请问能详细点吗?你这样只能比较2个不重复的,但是我有这么多7个数字要显示。怎么用if来做条件判断呢?
因为我自己学了几天,不太懂。麻烦你了
因为我自己学了几天,不太懂。麻烦你了
#3
Random ra = new Random(datetime.tostring());
带上当前时间参数。。只要时光不倒流一般不重复。。
带上当前时间参数。。只要时光不倒流一般不重复。。
#4
给一分 真大方...
#5
Random()默认就是使用时间作为随机发生器的种子的,在大量使用随机数的时候,ticks还没来得及改变,现在我们常用的随机发生器都是伪随机数字,是需要种子的,在种子一样时,产生的随机序列是一样的,因此随机数也就不随机了,再每次取随机数之前,我们暂停一毫秒
System.Threading.Thread.Sleep(1);
------------------------------------------------------
example:System.Random random = new Random();
System.Threading.Thread.Sleep(1);
int s = random.Next();
也可以试一试 可以试一试 System.Security.Cryptography.RNGCryptoServiceProvider ,性能就没有 System.random 快了。
System.Threading.Thread.Sleep(1);
------------------------------------------------------
example:System.Random random = new Random();
System.Threading.Thread.Sleep(1);
int s = random.Next();
也可以试一试 可以试一试 System.Security.Cryptography.RNGCryptoServiceProvider ,性能就没有 System.random 快了。
#6
但是我照你这样写,不行哦。说没有TOSTRING这个东西。我晕了
#7
为什么我照抄你的System.Threading.Thread.Sleep(1);这个上去。但是说1前面的(这个标记无效呢?