相关疑难解决方法(0)

为什么人们说使用随机数发生器时存在模偏差?

我已经看到这个问题了很多但从未见过真正的具体答案.所以我将在这里发布一个,希望能帮助人们理解为什么在使用随机数生成器时会出现"模数偏差",就像rand()在C++中一样.

c++ language-agnostic random modulo

270
推荐指数
6
解决办法
4万
查看次数

arc4random和arc4random_uniform有什么区别?

所以我看过关于Obj中随机和arc4random之间差异的旧帖子.C,我已经在网上看到了这个答案,但我并没有真正理解答案,所以我希望有人可以用更容易理解的方式解释它.

使用randomarc4random生成随机数有什么区别?

random objective-c arc4random

43
推荐指数
1
解决办法
4万
查看次数

将arc4random()的结果转换为Int时崩溃

我写了一个简单的Bag类.袋子装有固定比例的温度枚举.它允许您随机抓取一个并在空时自动重新填充.它看起来像这样:

class Bag {
    var items = Temperature[]()

    init () {
        refill()
    }

    func grab()-> Temperature {
        if items.isEmpty {
            refill()
        }

        var i = Int(arc4random()) % items.count
        return items.removeAtIndex(i)
    }

    func refill() {
        items.append(.Normal)

        items.append(.Hot)
        items.append(.Hot)

        items.append(.Cold)
        items.append(.Cold)
    }
}
Run Code Online (Sandbox Code Playgroud)

温度枚举如下所示:

enum Temperature: Int {
    case Normal, Hot, Cold
}
Run Code Online (Sandbox Code Playgroud)

GameScene:SKScene有一个常量实例属性bag:Bag.(我用一个变量试为好.)当我需要一个新的温度我打电话bag.grab()的,一旦didMoveToView当适当touchesEnded.

随机此调用崩溃的if items.isEmpty一致Bag.grab().错误是EXC_BAD_INSTRUCTION.检查调试器显示项目是size=1[0] = (AppName.Temperature) <invalid> (0x10).

编辑看起来我不懂调试器信息.即使有效的数组显示 …

random swift

27
推荐指数
1
解决办法
7463
查看次数

在Swift中创建随机Bool

我需要在我的游戏中创建一个随机的bool值,在Swift中.

基本上,如果是(或1),则生成一个对象,如果否(或0),则生成另一个对象.

到目前为止,在这里查看这个问题和类似的问题,我发现了这个:

let randomSequenceNumber = Int(arc4random_uniform(2))
Run Code Online (Sandbox Code Playgroud)

现在它有效,但似乎偏向于0对我来说......就像荒谬的偏见......

这就是我如何使用该值:

if(randomSequenceNumber == 0)
    //spawn object A
else
    //spawn object B
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来使用随机bool值来实现它?那不是偏向某个值吗?

更新

在10,000次通话中产生了一个实验来看看有多少1人的比赛0:

func experiment() {
    var numbers: [Int] = []
    var tester: Int = 0
    var sum = 0

    for i in 0...10000 {
        tester = Int(arc4random_uniform(2))
        numbers.append(tester)
        print(i)
    }

    for number in numbers {
        sum += number
    }

    print("Total 1's: ", sum)
}

Test 1: Console Output: Total 1's: …
Run Code Online (Sandbox Code Playgroud)

random boolean swift swift2

27
推荐指数
3
解决办法
9923
查看次数

Linux中的Swift arc4random_uniform(max)

我在Ubuntu中使用Swift,我收到一个错误,arc4random是一个未解析的标识符.在这个已知的错误的详细信息在这里.基本上,该功能仅存在于BSD发行版中.我已经尝试过模块映射头文件,apt-getting包,并且我得到越来越多的错误,这是不值得追求的,因为这个函数不经常使用.

是否有任何函数可以获取具有与Linux中的Swift兼容的上限参数的伪随机数?

swift swift3 ubuntu-16.04

12
推荐指数
3
解决办法
3116
查看次数

Firebase 存储覆盖文件

我的程序中有一个小错误。

我的应用程序中有 firebase 存储。我想让用户将图像上传到存储。

问题是当用户上传图像然后尝试上传另一张图像时。该程序会覆盖之前上传的图像。

我想要的是当用户想要上传另一张图像时避免“覆盖”。并将两个图像保存在不同的文件中

let currentUser = Auth.auth().currentUser
    let StorageRefrenece = Storage.storage().reference()
    let posterImageRef =
        StorageRefrenece.child("posters").child(currentUser!.uid).child("posterOne.jpg")
Run Code Online (Sandbox Code Playgroud)

谢谢

firebase swift firebase-storage

12
推荐指数
1
解决办法
8563
查看次数

Arc4random模数偏差

根据这个文档,

arc4random_uniform()建议使用结构,arc4random() % upper_bound因为当上限不是2的幂时,它避免了"模偏差".

偏见有多糟糕?例如,如果我生成上限为6的随机数,使用和之间arc4random有什么区别?%arc4random_uniform()

random probability objective-c arc4random

11
推荐指数
1
解决办法
1836
查看次数

如何在Swift中生成一个随机数而不重复前一个随机数?

我对Swift和编程逻辑都很陌生,所以请耐心等待

如何在Swift中生成0到9之间的随机数,而不重复上一次生成的数字?因为相同的数字不会连续出现两次.

swift

11
推荐指数
4
解决办法
1万
查看次数

如何在Swift中抑制特定警告

我有一个Swift函数做这样的事情:

func f() -> Int {
    switch (__WORDSIZE) {
        case 32: return 1
        case 64: return 2
        default: return 0
    }
}
Run Code Online (Sandbox Code Playgroud)

因为__WORDSIZE是常量,所以编译器总是在开关体中给出至少一个警告.实际标记了哪些行取决于我正在构建的目标(例如iPhone 5对6;有趣的是iPhone 5给出了64位情况的警告,而iPhone 6给出了32位和默认的两个警告).

我发现,雨燕的等价物#pragma// MARK:,所以我尝试

// MARK: clang diagnostic push
// MARK: clang diagnostic ignored "-Wall"
func f() -> Int {
    switch (__WORDSIZE) {
        case 32: return 1
        case 64: return 2
        default: return 0
    }
}
// MARK: clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

但警告仍然存在,MARKs似乎没有效果.

作为一种解决方法,我现在有这样的事情:

#if arch(arm) || arch(i386)
    return …
Run Code Online (Sandbox Code Playgroud)

compiler-warnings swift

7
推荐指数
1
解决办法
6387
查看次数

你如何在swift中生成一个随机数?

TL:博士; 如何生成随机数,因为书中的方法每次都会选择相同的数字.

根据Apple发布的书,这似乎是Swift生成随机数的方式.

protocol RandomNumberGenerator {
    func random() -> Double
}
class LinearCongruentialGenerator: RandomNumberGenerator {
    var lastRandom = 42.0
    let m = 139968.0
    let a = 3877.0
    let c = 29573.0
    func random() -> Double {
        lastRandom = ((lastRandom * a + c) % m)
        return lastRandom / m
    }
}
let generator = LinearCongruentialGenerator()

for _ in 1..10 {
    // Generate "random" number from 1-10
    println(Int(generator.random() * 10)+1)
}
Run Code Online (Sandbox Code Playgroud)

问题是,在我放在底部的for循环中,输出如下所示:

4
8
7
8
6
2
6
4
1 …
Run Code Online (Sandbox Code Playgroud)

random swift

5
推荐指数
1
解决办法
1万
查看次数