我已经看到这个问题了很多但从未见过真正的具体答案.所以我将在这里发布一个,希望能帮助人们理解为什么在使用随机数生成器时会出现"模数偏差",就像rand()在C++中一样.
所以我在这个代码中的目标是随机滚动两个骰子,因为我们都知道你的常规骰子只有6个边,所以我导入了Foundation来访问arc4random_uniform(UInt32).我试图使用(1..7)的范围来避免随机获得0,但是返回了一个我不太喜欢的错误.我试着这样做:
dice1 = arc4random_uniform(UInt32(1..7))
Run Code Online (Sandbox Code Playgroud)
然而那又归来了
找不到接受提供的参数的'init'的重载
我希望这是足够的信息,你在那里惊人的debs帮助我:)
请注意我只是在操场上练习快速练习.我不必学习如何做到这一点; 在我开始构建实际的应用程序之前,我只是在修补:D
//imports random number function
import Foundation
//creates data storage for dice roll
var dice1: UInt32 = 0
var dice2: UInt32 = 0
//counter variable
var i = 0
//how many times snake eyes happens
var snakeeyes = 0
//how many times a double is rolled
var `double` = 0
//rolls dice 100 times
while i < 100{
//from here
//sets dice roll
Run Code Online (Sandbox Code Playgroud)
这将返回错误"Range $ T3"无法转换为UInt32
Run Code Online (Sandbox Code Playgroud)dice1 = arc4random_uniform(1..7) dice2 = arc4random_uniform(1..7) …