四时宝库

程序员的知识宝库

C# - Math与Random类 053(c# random用法)

Math类

是一个静态类,主要为三角函数,对数函数及其他通用数学函数提供常数和静态方法

1)PI

是一个双精度常量的公共字段public const double PI;

2)Abs

用于获取参数的绝对值(结果为非负数)

3)Ceiling

向上取整(返回参数的最小整数)

4)Floor

向下取整(返回参数的最大整数)

5)Round

四舍五入取偶

取偶:就是看上一位,如果是偶数,小数位为 5 就舍弃;若为奇数,小数位为 5 就进 1

如 Math.Round(74.5)=74;

static void Main(string[] args)
{
    Console.WriteLine("公共的常量字段 ");
    Console.WriteLine(Math.PI);
    Console.WriteLine("获取参数的绝对值");
    Console.WriteLine(Math.Abs(-9));
    Console.WriteLine(Math.Abs(0));
    Console.WriteLine(Math.Abs(9));
    Console.WriteLine("向上取整");
    Console.WriteLine(Math.Ceiling(9.0001));
    Console.WriteLine(Math.Ceiling(9.9m));
    Console.WriteLine("向下取整"); 
    Console.WriteLine(Math.Floor(9.1));
    Console.WriteLine(Math.Floor(9.9));
    Console.WriteLine("四舍五入");
    Console.WriteLine(Math.Round(9.8));
    Console.WriteLine(Math.Round(9.1));
    Console.ReadKey();
  //其他静态方法及其重载方法自己测试
}

Random

是一个非静态类,需要使用new声明一个实例,用于产生非负int类型的伪随机数

声明的语法格式

//声明一个实例
Random 实例名 = new Random();
Random rm = new Random();
//调用方法
rm.方法名();

1 Next() 此方法有3个最常用重载方法

1)用于产生一个非负int类型范围内的数字

2)Next(int Max)产生一个不大于Max的非负int类型的数字

3)Next(int Min,int Max)产生一个在最小值(Min)与最大值(Max)之间的非负int类型的数字

取值范围包含Min但不包含Max,如果Min=Max则返回Min

2 NextDouble() 产生一个0.0-1.0之间的小数

//声明Random类的一个实例
Random rm = new Random();
//产生随机小数
 for (int i = 0; i < 10; i++)
 {
     Console.WriteLine(rm.NextDouble());
 }
//参数随机整数
while (true)
{
    Console.WriteLine("随机产生int范围内的正整数 {0}",rm.Next());
    Console.WriteLine("随机产生不大于99的正整数 {0}", rm.Next(99));
    Console.WriteLine("随机产生0-9之间的正整数 {0}", rm.Next(0, 9));
    Console.ReadKey();
}

示例:给定一个int类型数组,随机生成一些该数组长度的数字,要求数字不能重复并且范围在0-99之间,将产生的数字赋值给数组的各个元素

//产生数组长度不重复值的方法
/// <summary>
/// 获取不重复的数字
/// </summary>
/// <param name="arr">传入数组,获取数组长度</param>
/// <param name="min">最小值</param>
/// <param name="max">最大值</param>
/// <returns>返回具有不重复值的数组</returns>
static int[] IsRepeatNum(int[] arr, int min, int max)
{
    Random rm = new Random();
    int num = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        num = rm.Next(0, 99);
      //如果产生的随机数
      //包含在数组中就会一直循环
        while (arr.Contains(num))
        {
            num = rm.Next(min, max);
        }
      //如果产生的随机数不在数组中
      //将随机数赋值给当前元素
        arr[i] = num;
    }
  //暂时使用有返回值方式
    return arr;
}
//=====调用方法==============
static void Main(string[] args)
{
  while (true)
    {
         int[] arr = new int[10];
         int min = 0, max = 99;
        arr= IsRepeatNum(arr, min, max);
        Console.WriteLine("循环输出数组的值");
         for (int i = 0; i < arr.Length; i++)
         {
             Console.WriteLine("{0} ", arr[i]);
         }
         Console.WriteLine("");
         Console.ReadKey();
     }
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接