随机相关(C#、Lua、Unity)

C#

生成随机整数

var random = new Random();
var num = random.Next(1, 19);

生成随机小数

public double GetRandom(Random random, double minValue, double maxValue)
{
    //random.NextDouble() 返回一个大于或等于 0.0 且小于 1.0 的随机浮点数
    return random.NextDouble() * (maxValue - minValue) + minValue;
}


//保留几位小数
public double GetRandom(Random random, double minValue, double maxValue, int decimalPlace)
{
    double randNum = random.NextDouble() * (maxValue - minValue) + minValue;
    return Math.Round(randNum, decimalPlace);
}

随机种子

如果生成随机数的间隔太短可能导致生成的随机数有多数重复的现象,可以通过添加随机数种子来解决

var random = new Random(Guid.NewGuid().GetHashCode());
var num = random.Next(1, 19);

Lua

math.random()

返回一个在[0,1)范围内的伪随机小数

math.random(x)

返回一个在[1,x]范围内的伪随机整数

math.random(x,y)

返回一个在[x,y]范围内的伪随机整数

扫描二维码关注公众号,回复: 17548003 查看本文章

math.randomseed(x)

1、math.randomseed(x)用于设置伪随机数发生器的种子,系统默认x为1

2、若x相同,则生成的伪随机数序列也相同,要想生成的随机数序列不同则将x设置伪不同的值

3、使用math.randomseed(os.time())来使用当前系统时间来初始化

--对随机性要求不高的情况
math.randomseed(os.time())
print(math.random(1,20))


--对随机性要求较高的情况
local seed = tonumber(tostring(os.time()):reverse():sub(1,6))
math.randomseed(seed*1000)
local num = math.random(1, 20)

--生成随机小数
function GetRandom(minValue,maxValue)
   local value = math.random()
   return minValue+value*(maxValue-minValue)
end    

--生成随机小数(限制位数)
function GetRandom(minValue,maxValue,decimalPlace)
   local value = math.random()
   local result = minValue+value*(maxValue-minValue)
   local format = "%."..decimalPlace.."f"
   result = string.format(format,result)
   result = tonumber(result)
   return result
end  

Unity

变量

描述

Random.value

返回一个在[0,1]之间的浮点随机数

Random.rotation

生成一个随机旋转

Random.insideUnitCircle

返回一个半径为 1 的圆内随机选择的圆内点

Random.insideUnitSpher

返回一个半径为 1 的球内随机选择的球内点

Random.onUnitSphere

返回一个半径为 1 的球上随机选择的球体的_球面点

方法

描述

Random.Range(x,y)

如果x,y都是浮点数,那么返回一个[x,y]之间的浮点数

如果x,y都是整数,那么返回一个[x,y)之间的整数

Random.ColorHSV

生成一个随机颜色

Random.InitState

设置随机数种子

例如在程序化地生成游戏关卡时,可以设置自己的种子。可以使用随机选择的元素使场景随意且自然地表现,但是在生成之前将种子设置为预设值。这可确保在每次玩游戏时生成相同的“随机”模式。这通常可以作为减少游戏存储要求的有效方式 - 可以程序化地生成所需数量的关卡,并且仅仅使用一个整数种子值存储每个关卡。

猜你喜欢

转载自blog.csdn.net/qq_44809934/article/details/145598181
今日推荐