当随机数不够随机:取模选值的均匀分布陷阱与 random_choice 设计
用 random_u64() 取模从 N 个对象中随机选一个,会破坏输入的均匀分布:从 [0,9] 中取数再对 3 取模,choice 1 被选中概率为 40%,而 choice 2、3 各只有 30%。
用 random_u64() 取模从 N 个对象中随机选一个,会破坏输入的均匀分布:从 [0,9] 中取数再对 3 取模,choice 1 被选中概率为 40%,而 choice 2、3 各只有 30%。
C++ 模板代码有三种主流组织方式:包含模型把声明与实现全部放入头文件,是日常开发与库开发的首选;显式实例化用 template 指示符手动生成指定类型实例,适合类型集合固定的场景;分离模型基于 export 关键字,因编译器支持极差且 C++11 后逐步废弃,不建议生产使用。包含模型带来的编译时间压力可用预编译头文件缓解。
用仓颉 1.1.3 写成的棋盘游戏《驿路巡点》从鸿蒙迁往 iOS 和 Android 时,团队先试了交叉编译加原生壳,只跑通 1 关;9 月 27 日核查发现 Canvas 未编入 iOS/Android 引擎构建,9 月 28 日起转向 CJMP。所用 OpenSDK 0.2.2 内置 cjc 1.1.0,落后主分支 v0.7.0 五个版本,所有验证均在模拟器上完成。
Zig 0.17.0 正式发布,这是该底层系统编程语言向 1.0 迈进的关键里程碑版本。该版本经过 5 个月迭代,汇集全球 206 位贡献者的 925 次代码提交,并对构建系统进行了较大改动。