游戏中用到的真随机

隨機產生一個值在程式設計中算是滿常使用到的一個需求

可能你希望每次進來程式的時候,都可以讓使用到感到不一樣

因此你就會需要「Random」隨機值

C#

而在 C# 中,有個一名為「Random」的類別,用來產生你需要的隨機值

static void Main(string[] args)
{
    Random ran = new Random();
    for (int i = 0; i < 10; i++)
    {
        // ran.Next() = 傳回一個非負的亂數整數
        // ran.Next(int maxValue) = 傳回一個不大於 maxValue 的非負亂數整數
        // ran.Next(int minValue, int maxValue) = 傳回一個不小於 minValue且不大於 maxValue 的非負亂數整數
        Console.WriteLine("Random value = {0}.", ran.Next(0, 10));
    }
    Console.Read();
}

使用「Next( )」的函式來取得一個隨機值,Random 提供了三個多載函式。(說明在程式碼的註解)

Random 的預設值是以「系統時間」來產生隨機值

所以可能在短時間內會產生一樣的數

若想避免這個問題

可以在初始化 Random 物件的時候,給予一個值。

我們這邊來產生一個 HashCode

這樣一來就比較能避免掉重複值一直出現的問題。

static void Main(string[] args)
{
    Random ran = new Random(Guid.NewGuid().GetHashCode());
    for (int i = 0; i < 10; i++)
    {
        // ran.Next() = 傳回一個非負的亂數整數
        // ran.Next(int maxValue) = 傳回一個不大於 maxValue 的非負亂數整數
        // ran.Next(int minValue, int maxValue) = 傳回一個不小於 minValue且不大於 maxValue 的非負亂數整數
        Console.WriteLine("Random value = {0}.", ran.Next(0, 10));
    }
    Console.Read();
}

所得出來的結果是一樣的。


image


Unity3D

這篇其實是在用 Unity3D 遊戲引擎寫遊戲的時候發現的(使用的語言也是 C#)

因為以前用 C# 寫程式的時候,很直覺的就會使用 上一段的方法來產生隨機值

但 Unity3D 其實自己有提供一個也叫「Random」的類別

不過其類別的屬性皆為靜態

而產生隨機值的函式名稱也不同

而在 Unity3D 中使用的方式很簡單

程式碼如下

// float Range(float min, float max) = 回傳一個不小於 min 且不大於 max 的隨機浮點數值
// int Range(int min, int max) = 回傳一個不小於 min 且不大於 max 的隨機整數值
int i = Random.Range(0, 100);
float j = Random.Range(0.0f, 100.0f);

Range 是一個靜態函式,提供兩種回傳型別 int 和 float

而且一定得給最小值和最大值

還有一個差異是 – 值可以是「負」的!!

而因為這個地方和 C# 本身的是一樣,也是採用目前系統的時間當種子去產生隨機值

所以在 Unity3D 也是可以讓你去變更種子的

我們一樣是使用 HashCode 來當種子

Random.seed = System.Guid.NewGuid().GetHashCode();
// float Range(float min, float max) = 回傳一個不小於 min 且不大於 max 的隨機浮點數值
// int Range(int min, int max) = 回傳一個不小於 min 且不大於 max 的隨機整數值
int i = Random.Range(0, 100);
float j = Random.Range(0.0f, 100.0f);

不過因為 Guid 使用到 C# 的 System 命名空間

所以在編譯和包成檔案的時候,也會把這個 dll 給包進去(容量就會增加)

在使用上的話就給大家參考一下

Unity3D Random API 參考連結:http://docs.unity3d.com/Documentation/ScriptReference/Random.html


https://kw0006667.wordpress.com/2013/04/02/c-隨機產生值-vs-unity-隨機產生值/

转自以上链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 random 模块来生成随机文名称。首先需要准备一个文名称字典,然后使用 random.choice() 方法随机选取一个名字。代码示例如下: ```python import random # 文名字字典 names = ["张三", "李四", "王五", "赵六", "钱七"] # 随机生成一个名字 random_name = random.choice(names) print(random_name) ``` 也可以使用第三方库 Faker,它提供了生成随机文名称的方法,示例如下: ```python from faker import Faker # 初始化 Faker 对象 faker = Faker(locale='zh_CN') # 生成随机名字 name = faker.name() print(name) ``` 可以看到Faker 提供的用法更加简洁。 ### 回答2: Python随机文名称生成器是一个能够生成随机文姓名的程序。在这个生成器,首先我们会定义一个包含常用汉字的列表,包括姓氏和名字的部分。然后,通过random模块随机函数,我们可以从这个列表随机选择若干个字来组成姓名。 生成器的首要任务是生成一个随机姓氏。我们可以使用random.choice函数从姓氏列表随机选择一个姓氏,并将其保存为一个变量。接下来,我们可以生成一个随机的名字。我们可以通过random.choices函数从名字部分的列表选择若干个字,然后使用join函数将这些字组合成一个名字。 生成器还可以接收输入参数来生成特定类型的姓名。例如,如果用户希望生成男性的姓名,我们可以在姓氏列表添加一些男性常用姓氏,并在随机选择时增加权重。同样,如果用户希望生成包含特定字的姓名,我们可以添加一个过滤器,确保生成的姓名包含这些字。 通过调用生成器函数,我们可以得到一个随机生成的文姓名。这个生成器不仅可以在游戏开发生成NPC角色的姓名,还可以用于测试数据生成、编程训练等场景。 ### 回答3: Python随机文名称生成器是一个基于Python语言开发的工具,用于生成随机文名字。 在实现这个生成器的时候,我们可以利用Python的随机数生成器来随机选择文姓氏和名字的字符,然后将它们组合在一起,形成一个完整的文名字。 首先,我们可以定义一个包含常用文姓氏的列表,例如['张','王','李','赵','刘'],然后使用random模块的choice函数来随机选择一个姓氏。 接着,我们可以定义一个包含常用文名字的列表,例如['伟','芳','敏','明','静'],同样地,使用choice函数来随机选择一个名字。 最后,我们将姓氏和名字组合在一起,形成一个完整的文姓名。 以下是一个示例代码: ```python import random # 定义常用的文姓氏和名字 surnames = ['张','王','李','赵','刘'] names = ['伟','芳','敏','明','静'] # 随机选择一个姓氏和名字 surname = random.choice(surnames) name = random.choice(names) # 组合姓氏和名字形成一个完整的文姓名 full_name = surname + name print(full_name) ``` 通过运行以上代码,我们可以得到一个随机生成的文姓名,例如"张敏"、"刘芳"等。 这个生成器可以应用在各种场景下,比如创建测试数据、生成随机化的用户昵称等。因为是随机生成的,每次运行都可以得到不同的文名字,非常方便实用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值