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