获得一个随机数

Math

Math是数学的意思,里面有一些处理数字的方法,比如算正弦,余弦,绝对值,对数之类的

Console.WriteLine(Math.Log(10));
Console.WriteLine(Math.Abs(-10));
Console.WriteLine(Math.Cos(-10));

在java中,随机数写在Math类里面

System.out.println(Math.random());

除了方法,Math里面还有两个常量π和e

Console.WriteLine(Math.E);
Console.WriteLine(Math.PI);

他们写的不是一个数值,但他们也是常量。这种变量在声明的时候就被赋值,且不可更改。因此是可预测的

Math.E=12;

至于如何写属于你自己的常量,先挖个坑


Random

random类是用来构造随机数的
使用方法:

Random rm = new Random();
Console.WriteLine(rm.Next());

如果你基础够好就会记得,Random是类型,rm是变量名,new Random()是值
rm和new Random()是一样的效果
所以,可以把他们挤在一起写

Console.WriteLine(new Random().Next());

伪随机

请注意new Random()中的括号不要写值

要知道世界上没有真正的未知,只是我们的能力不足以知道罢了
丢一个骰子时,如果高度,角度,空气,地面的硬度,碰撞的位置这些全部都一样
那么就相当于你丢一个骰子,然后把时间倒带,重播一次,结果不可能会发生变化。

而电脑所生成的随机数也是这样,这是一种伪随机。
它通过一种算法得到一个值再把这个值再用这个算法再算,一直循环很多次以后得到一个值
也就是说只要重复次数够多,就能形成一个周期,又随机回原点

幸运的是这种算法的周期非常长,从数量级来说可以用到宇宙终结。当然这个结论没有算进去以后的电脑
不幸的是,用一个数进行一个算法,那这个数怎么获得?
这个最开始的数就称为种子,只要种子一样,再得到算法,就能预测可以得到的数

而random()的括号里就是用来填写种子的

			for (int i = 0; i < 10; i++)
			{
    
    
				for (int j = 0; j < 10; j++)
				{
    
    
					Console.WriteLine(new Random(j).Next());
				}
				Console.WriteLine();
			}

只要种子是一样的,那么这个随机数就不是那么的随机

如果不填种子,那么将取计算机中的时刻来当种子
还是上面那串代码,把参数去掉,你会发现得出来的随机数也不是那么的随机

不过不用担心,对游戏而言有服务器延时,有抽卡动画。再不济也有用户的uid
有很多的唯一标识都可以用来当做种子。不用担心种子重复的问题


next中的参数

next中的参数很好说明,你填多少,就不会出现它和比它大的数
如果你填2,就只会出现0和1。记得,“从零开始”.,1是第二个
不要给这个参数填小于等于0的数

如果你要随机20-50中的随机数
方法是50-20=30

Console.WriteLine(new Random().Next(31)+20);

如果要随机到50这个数的话,30需要加个1

猜你喜欢

转载自blog.csdn.net/zms9110750/article/details/107047461