double u=0.8;
想取0.02 至U=0.8随机数,每次随机数不一样,有浮动,不超过u的值0.8怎样写呢?
做了一个示例,如下:
using System;
using System.Collections.Generic;
namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
NewNumber(100);
Console.WriteLine($"{string.Join(",", RandomList)}");
Console.ReadKey();
}
public static Random Random = new();
public static List<double> RandomList = new();
static double _myNumber;
static void NewNumber(int count)
{
for (var i = 0; i < count; i++)
{
_myNumber = GetRandomNumber(0.02, 0.8);
if (!RandomList.Contains(_myNumber))
RandomList.Add(_myNumber);
}
}
public static double GetRandomNumber(double minimum, double maximum)
{
return Math.Round(Random.NextDouble() * (maximum - minimum) + minimum, 2);
}
}
}
何必呢,乘一个倍数 变成整数,Random取随机数后 再除这个数就好了,虽然不能全部覆盖。
protected static double NextDouble(Random random, double miniDouble, double maxiDouble)
{
double num = maxiDouble - miniDouble;
if (num <= double.MaxValue)
{
var ran = random.NextDouble();
var numRes = (ran * (double)num) + miniDouble;
return numRes;
}
int RandNum = random.Next();
if ((random.Next() % 2 == 0) ? true : false)
{
num = -num;
}
double num2 = num;
num2 += 2147483646.0;
num2 = num2 / 4294967293.0;
return (num2 * (double)num) + miniDouble;
}
直接random随机数整数,然后除以倍数不一样吗?