Erlang的random:uniform()函数

转载请注明,来自: http://blog.youkuaiyun.com/skyman_2001

看它的代码实现:
uniform() ->
    {A1, A2, A3} = case get(random_seed) of
		       undefined -> seed0();
		       Tuple -> Tuple
		   end,
    B1 = (A1*171) rem 30269,
    B2 = (A2*172) rem 30307,
    B3 = (A3*170) rem 30323,
    put(random_seed, {B1,B2,B3}),
    R = A1/30269 + A2/30307 + A3/30323,
    R - trunc(R).

每次调用会更新进程字典里的random_seed变量,这样在同一个进程内每次调用random:uniform()时,随机数种子都不同,所以生成的随机数都不一样(调用完random:uniform()后,可以用get(random_seed)查看更新后的种子值)。

但是如果是不同的进程分别调用random:uniform(),因为随机种子更新的算法是一样的,所以每次各进程的随机数种子也是相同的,从而生成的随机数也是一样的,要想让不同进程生成的随机数不同,要手动为每个进程设置不同的种子,常用的是用erlang:now,比如:

random:seed(erlang:now()),
random:uniform().

不过如果每个进程调用random:seed(erlang:now())太接近,种子值会比较接近,生成的随机数也会比较接近,更好的方法是用一个单独的进程来生成种子,保证每次的种子值相差比较大:

Seed = {random:uniform(99999), random:uniform(999999), random:uniform(999999)}
然后每次调用random:uniform()前从该种子生成进程获取最新的种子值,seed()之。

### Android Studio 安装教程 要安装 Android Studio 并创建新项目,以下是详细的说明: #### 一、准备工作 在开始之前,需要准备好两个必要的组件:Java Development Kit (JDK) 和 Android Studio。这两个文件都可以从官方渠道获取。 - **JDK**: 推荐使用 JDK 1.8 或更高版本[^2]。 - **Android Studio**: 可以访问 Android Studio 的官方网站或其中国镜像站点进行下载[^1]。 #### 二、下载并安装 Android Studio 1. 访问 [Android Studio 中文社区](http://www.android-studio.org/) 页面,点击页面上的“下载”按钮进入下载界面。 2. 下载完成后,双击安装包按照提示逐步完成安装过程。注意,在安装过程中可以选择是否安装模拟器和其他附加组件。 #### 三、配置环境变量(可选) 如果尚未设置 Java 环境变量,则需手动添加 `JAVA_HOME` 路径指向已安装的 JDK 文件夹,并将其加入系统的 PATH 环境变量中。 --- ### 创建新项目 #### 四、启动 Android Studio 打开应用程序后会看到欢迎界面,如果没有现有工程则可以直接跳转至下一步操作。 #### 五、新建项目流程 1. **选择模板** - 在初始界面上找到 “Start a new Android Studio project”,即【New Project】按钮,点击它开启向导对话框。 - 提供多种预定义的应用结构作为起点;这里建议初学者选用最基础的形式——“Empty Activity”。这代表空白活动页设计模式[^3]。 2. **填写详情参数** - 输入字段包括但不限于: - 应用名称 (`Application name`) —— 自定义即可; - 公司域名反写形式构成包名(`Package name`) ,推荐全字母小写书写习惯保持一致性; - 存储路径决定最终编译产物存放地址; - 编程语言支持两种主流语法体系之一要么选取 Kotlin 要么坚持传统经典风格 Java; - 最低兼容 API Level 数字越大意味着覆盖范围越窄但功能更强大反之亦然。 3. **确认提交** - 当上述各项均调整满意之后按下 Finish 键结束初始化阶段随即触发后台 Gradle 同步动作直至成功为止期间可能耗费较长时间视网络状况而定所以务必具备足够的耐心等待整个环节顺利完成。 4. **运行验证成果** - 成功加载主编辑区域以后便能够着手开发具体业务逻辑了不过在此之前最好先检验一下当前搭建好的框架能否正常运作起来。 - 如果本地已经存在可用 AVD(Android Virtual Device),那么只需一键执行便可观察效果;否则就需要另行建立一台虚拟装置或者借助实体移动终端配合 USB Debugging 功能实现联调目的。 ```bash # 示例命令行检查gradle同步状态 ./gradlew --version ``` --- ### 设备管理与 SDK 更新 为了确保开发效率最大化以及适配目标平台需求,定期维护所依赖的基础资源库显得尤为重要。 - 使用顶部菜单栏中的专用图标快速切换至对应的子模块窗口分别对应的是设备管理和软件开发套件(Software Development Kits,简称SDks): - *Device Manager*: 查看已有仿真机型列表并对它们实施增删改查等常规事务处理。 - *SDK Manager*: 获取最新的插件补丁集及时修复潜在漏洞同时引入新增特性增强用户体验质量。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值