ios – arc4random(mac os x)怎么随机? (或者我做错了什么?)

我正在玩 swift / mac_os_x的优化游戏生活实现.第一步:随机一个大网格的细胞(50%活着).

码:

for(var i=0;i<768;i++){
  for(var j=0;j<768;j++){
    let r = Int(arc4random_uniform(100))
    let alive = (aliveOdds > r)
    self.setState(alive,cell: Cell(tup:(i,j)),cells: aliveCells)
  }
}

我期望一个相对均匀的随机性.我得到了明确的模式:

放大左下角的一点:

(我已经将颜色改为黑色,每32行和列,以查看图案是否排列有任何权力的2).

任何线索是什么导致的模式?我试过了:

>用rand()替换arc4random.
>在每个arc4random_uniform调用之前添加arc4stir()
>移动显示(确保图案在数据中,而不是显示毛刺)

下一步的想法?

解决方法

>在任何可显示的集合(16 *(2 ** 31)-1)上,您不能击中周期或许多常规的不均匀的arc4random集群.

这些绝对是破坏/未初始化内存的迹象.例如,您正在初始化768×768字段,但您显示1024xsomething字段.

>尝试用100替换Int(arc4random_uniform(100))来查看.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...