Как сделать Random более случайным не прибегая к паузе? - C#
Формулировка задачи:
Вот код, меня в принципе все устраивает, но можно ли сделать как-нибудь без пауз или переместить, ибо при 500 опытах(num=500) работает чуть больше 18 секунд, скажем так мне в принципе без разницы, но если есть способ этого избежать, то лучше избежать...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Security.Cryptography;
namespace Lottery
{
public partial class Form1 : Form
{
int[,] ticket = new int[9, 2];
int[] res = new int[9];
int[] pred = new int[9];
int[] sum = new int[9];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Stopwatch myStopwatch = new System.Diagnostics.Stopwatch();
myStopwatch.Start(); //запуск
int num = Convert.ToInt32(numericUpDown1.Value);
textBox1.Text = "";
for (int i = 0; i < 9;i++ )
{
sum[i] = 0;
}
for (int j = 0; j < num; j++)
{
game();
for (int i = 0; i < 9; i++)
{
sum[i] += res[i];
}
}
for (int i = 0; i < 9; i++)
{
textBox1.Text += Convert.ToString(sum[i]) + " ";
}
myStopwatch.Stop();
TimeSpan ts = myStopwatch.Elapsed;
textBox2.Text = Convert.ToString(ts);
}
void lot()
{
Thread.Sleep(1);
Random rand1 = new Random((int)DateTime.Now.Ticks);
for (int i = 0; i < 9; i++)
{
ticket[i, 0] = rand1.Next(0, 2);
ticket[i, 1] = 1 - ticket[i, 0];
}
}
void game()
{
for (int j = 0; j < 9; j++)
{
res[j] = 1;
Thread.Sleep(1);
Random rand2 = new Random((int)DateTime.Now.Ticks);
lot();
for (int i = 0; i < j+1; i++)
{
pred[i] = rand2.Next(0, 2);
if (ticket[i, pred[i]] != 1)
{
res[j] = 0;
break;
}
}
}
}
}
}Решение задачи: «Как сделать Random более случайным не прибегая к паузе?»
textual
Листинг программы
Thread.Sleep(1); Random rand1 = new Random((int)DateTime.Now.Ticks);