有时这段代码总是返回相同的数字(有时它工作正常):
(new Random()).nextInt(5)
Run Code Online (Sandbox Code Playgroud)
我怀疑问题在哪里 - 它可能总是创建一个具有相同种子的新Random.那么什么是最好的解决方案:
或者是其他东西?我不需要任何看似随意的东西.
如果有人能够解释为什么原始代码有时会起作用而有时却不能解释,那将会很有帮助.
谢谢.
随机化列表我遇到了很多问题.我在谈论一个包含200个元素的列表,我希望将其列入清单.不要误会我的意思,我读了很多例子,乍一看有很好的东西,比如:
但根据我的经验,至少在快速机器上,这基本上是毫无价值的.改组运行得如此之快,以至于两次调用Random.NEXT()之间没有MS延迟,导致几乎不随机的行为.
我不是在谈论超级安全的东西,只是随机的基本游戏.我知道我可以添加1 MS的延迟,但这意味着"浪费"200 MS只是随机化一个列表.
现在我找到了这种方法:http://www.codinghorror.com/blog/2007/12/shuffling.html
看起来不错,使用GUID进行排序.但他们不是以同样的方式创造的吗?让我们提高一个档次,让我们假设我要创建1000个数字,介于0 - 5之间.这段代码基本没用:
var resultA = new List<int>();
for (int i = 0; i < 1000; i++)
{
resultA.Add(new Random().Next(5));
}
var resultB = new List<int>();
for (int i = 0; i < 1000; i++)
{
resultB.Add(new Random().Next(5));
Thread.Sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
A根本不起作用,至少不是我在Windows Phone 7中的环境.B很好,但它需要一秒钟,这也是愚蠢的.任何评论或想法,创建随机的整数列表都不是那么难:-)
我在做C#编码.在我的编码中,我需要生成一个随机的数字列表.通常,如果我们创建一个随机数,我们需要选择数字的范围.但是对于我的情况,我需要从数组中创建一个随机数.任何的想法?我正在使用XAML和C#.
private void Submit_Click(object sender, RoutedEventArgs e)
{
int[] numbers = new int[5] {32, 67, 88, 13, 50};
Random rd = new Random();
//int myNo = rd.Next(numbers[])?
}
Run Code Online (Sandbox Code Playgroud)
额外:每次单击提交按钮,将选择随机数字[].我怎样才能确保不重复这个数字.例如:第一次点击,myNo = 67; 第二次点击,myNo = 50; 第3次点击,myNo = 88; 第4次点击,myNo = 32; 第5次点击,myNo = 13.谢谢!
我有这个代码:
var rand = new Random(0);
for(int i = 0; i < 100; i++)
{
Console.WriteLine(rand.Next(0, 100));
}
Run Code Online (Sandbox Code Playgroud)
程序应该给我100倍相同的数字(因为种子是相同的),但它给出了不同的数字......
为什么?
编辑:
我什么时候做
for(int i = 0; i < 100; i++)
{
Console.WriteLine(new Random(0).Next);
}
Run Code Online (Sandbox Code Playgroud)
每次返回相同的数字.那意味着种子正在改变?如果有,怎么样?它在增加吗?
我正在学习关于类的C#事件实现.
我有例子:
Car class继承了Sport和City课程.Car class具有由Sport和City类继承的基本方法调用OnBuy.在OnBuy方法中,事件处理程序已分配给Event Buy.
还有一个名为LicenseService的服务或类,每次购买时都会生成许可证号.
在这种情况下,我实现了事件驱动编程.这是我的git示例:
https://github.com/adityosnrost/CSharpLearningEvent
问题:
这是在C#上使用Event的正确方法吗?
如果这是正确的.我可以将OnBuy方法覆盖到每个孩子身上吗?如果覆盖可用,我该怎么办?
我可以做些什么来使这个样本更好?
谢谢
class Program
{
static void Main(string[] args)
{
Car car = new Car();
Sport sport = new Sport();
City city = new City();
//car.Name();
//sport.Name();
//city.Name();
//Console.ReadLine();
LicenseService ls = new LicenseService();
city.Buy += ls.GenerateLicense;
city.OnBuy();
Console.ReadLine();
}
}
internal class Car
{
internal virtual void Name()
{
Console.WriteLine("Car");
}
internal event EventHandler Buy;
internal virtual void OnBuy()
{
EventHandler handler = Buy;
if (null != …Run Code Online (Sandbox Code Playgroud) 我正在使用一种方法来创建两个int具有随机数的新数组,但这两个数组包含完全相同的数字.为什么会这样?
static void Main(string[] args)
{
int[] Foo1= Foo(1000);
int[] Foo2= Foo(1000);
}
static int[] Foo(int length)
{
int[] Array = new int[length];
Random r = new Random();
for (int i = 0; i < length; i++)
{
Array[i]=r.Next(1, 101);
}
//Thread.Sleep(6);
return Array;
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
随机数生成器不按我计划的方式工作(C#)
我创建了一个方法,返回一个随机数:
public static int SelectRandomMachine(int max)
{
int seed = (int)DateTime.Now.Ticks;
Random rndNumber = new Random(seed);
int randMachine = rndNumber.Next(0, max);
return randMachine;
}
Run Code Online (Sandbox Code Playgroud)
如果我两次调用该方法,目前它返回相同的随机数:
randM1 = SelectRandomMachine(maxNumber);
randM2 = SelectRandomMachine(maxNumber);
Run Code Online (Sandbox Code Playgroud)
任何建议都将受到高度赞赏.
我有8个标签.我希望每个标签的text属性设置为随机数.由于某种原因,只有第一个标签有一个数字集,为什么会这样?(另外,虽然没有直接相关,如果有更好的方法做label1.Text,label2.Text,label3.Text等,请告诉我!)
谢谢
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
go();
}
void go()
{
int[] numbers = new int[8];
foreach (int number in numbers)
{
numbers[number] = getRandomNumber();
}
label1.Text = numbers[0].ToString();
label2.Text = numbers[1].ToString();
label3.Text = numbers[2].ToString();
label4.Text = numbers[3].ToString();
label5.Text = numbers[4].ToString();
label6.Text = numbers[5].ToString();
label7.Text = numbers[6].ToString();
label8.Text = numbers[7].ToString();
}
int getRandomNumber()
{
Random random = new Random();
return random.Next(10, 1000);
}
}
Run Code Online (Sandbox Code Playgroud) 这是我第一次发帖.希望这个问题不会太混乱.我正在为一个初学者C#书的实验室工作,现在卡住了.我正在创建一个"狗赛跑模拟器"计划.当我点击"开始比赛"按钮,狗,直到他们到达终点移动到与定时器的每个替权利,在1到30之间的随机整数.我试着开关了代码一吨的不同的方式,阅读阵列,Random类,以及环网上,但出于某种原因,不管是什么,狗总是以同样的速度移动.它们需要以不同的随机速率随每个刻度移动.
解决方案会很好,但我真的想知道,为什么我的代码不起作用?不应该为每只狗分配一个不同的随机数,因为它循环通过数组的'i'值?
图片可以在这里找到:http: //makingspidersense.com/dograce.png
这是Form1代码:
Greyhound[] dogs = new Greyhound[4];
private void startRaceButton_Click(object sender, EventArgs e)
{
timer1.Start();
dogs[0] = new Greyhound() { MyPictureBox = dog1PictureBox };
dogs[1] = new Greyhound() { MyPictureBox = dog2PictureBox };
dogs[2] = new Greyhound() { MyPictureBox = dog3PictureBox };
dogs[3] = new Greyhound() { MyPictureBox = dog4PictureBox };
}
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 4 ; i++)
{
if (dogs[i] != null) …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,按照预期生成了一个随机值:
import random
for i in range(10):
print(random.randint(0,10))
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用函数,这将不起作用:
import random
def f(val: int = random.randint(0,10)):
print(val)
for i in range(10):
f()
Run Code Online (Sandbox Code Playgroud)
为什么第二个代码片段的结果总是相同的数字?我能找到的最相似的问题是这个,但它指的是一种不同的语言(我不掌握)。