这是奔跑的键盘侠的第201篇文章
作者|我是奔跑的键盘侠
来源|奔跑的键盘侠(ID:runningkeyboardhero)
转载请联系授权
题目003:生成0-1之间的随机小数,不能用自带的随机数函数,不能有明显的规律。
关于随机数,其实应用十分广泛,有时候可能都没意识到,突然就进坑了
1
随机数的经典应用场景
随机数在编程方面拥有大量应用,以下是一些较为经典的应用:
- 模拟游戏。在游戏编程中,随机数广泛用于模拟各种随机事件,例如卡牌游戏中抽卡、角色死亡概率等。
- 数据加密。随机数可以被用于生成加密密钥,提高数据安全性,例如密码学中的随机数生成器。
- 随机图像生成。随机数可以被用于随机生成艺术作品、图像或音频,这在各种创作领域中都有应用,例如计算机艺术、音乐等。
- 统计学。随机数在统计学中扮演着重要角色,例如蒙特卡罗模拟,其中随机数被用于生成随机样本,来模拟各种复杂的现象和问题。
- 自适应算法。自适应算法通常使用随机数来对可变参数进行调整,如人工神经网络和遗传算法等。
2
代码赏析
思路一:基于时间戳生成随机数
按键精灵语言内置函数 GetTime() 可以返回当前时间的毫秒数,我们可以利用该函数生成随机数。
代码语言:javascript复制rand = GetTime() % 100
没错,就一行,大道至简。上述代码中,将当前时间的毫秒数对 100 取模,可得到一个介于 0~99 之间的随机数。但是,这种方法的缺点是在同一毫秒内可能生成相同的随机数,因此随机性较差。
思路二:基于数组随机访问生成随机数
我们可以预定义一个数组,然后利用随机数选择数组中的元素作为生成的随机数。
代码语言:javascript复制dim arr[10], rand
arr[0] = 1
arr[1] = 3
arr[2] = 7
arr[3] = 11
arr[4] = 13
arr[5] = 17
arr[6] = 19
arr[7] = 23
arr[8] = 29
arr[9] = 31
rand = arr[Int(Rnd() * 10)]
上述代码中,我们预定义了一个长度为 10 的数组,并给其中的元素赋值。然后通过 Int(Rnd() * 10) 计算出介于 0~9 之间的随机整数,再利用该随机整数选择数组中对应的元素。这种方法相对于第一种方法的优点是随机性更好,缺点是需要事先定义数组并赋值。
所以,不同思路有着不同的优缺点,在选择方法时,一定要考虑到场景。比如号码抽奖,一个号码是否可以中2次以上,如果不可以,那使用第一个思路很可能会翻车。
-END-
© Copyright
奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权