离散概率值(discrete) 和 重置\洗牌(shuffle) 算法 及 代码

本文地址: http://blog.csdn.net/caroline_wendy/article/details/17120687

离散概率值, 是根据离散分布的概率(归一化), 计算出一个随机的值, 概率越大, 离散值出现的可能性就越大;

原理: 随机生成一个0-1的值,顺次累加概率值, 大于等于随机值输出, 由于概率值越大, 相加之后跨度越大, 越有可能输出;

重置(洗牌)(shuffle), 是随机打乱数组的值, 保持原值不变, 更换位置;

原理:遍历数组, 随机生成一个当前值, 之后的值, 即[当前值, 之后的值], 交换位置;

     /*
* Algorithms.java
*
* Created on: 2013.12.03
* Author: Wendy
*/ /*eclipse std kepler, jdk 1.7*/ public class Algorithms
{
//根据输入的概率数组, 随机输出离散的值
public static int discrete(double[] a)
{
double r = StdRandom.uniform();
double sum = 0.0;
for(int i=; i<a.length; i++)
{
sum += a[i];
if(sum >= r) return i;
}
return -;
} //重置(洗牌), 把数组值的顺序打乱
public static void shuffle(double[] a)
{
int N = a.length;
for(int i=; i<N; ++i)
{
int r = i + StdRandom.uniform(N-i); //"[ )"不能达到N-i, 最大N-i-1 将a[i]和a[i..N-1]中任意一个元素交换
double temp = a[i];
a[i] = a[r];
a[r] = temp;
}
} public static void main(String[] args)
{
double[] a = {0.1, 0.4, 0.3, 0.2};
StdOut.println("discrete value = " + discrete(a));
shuffle(a);
for(int i=; i<a.length; ++i){
StdOut.print(a[i] + " ");
}
StdOut.println();
}
}

输出:

 [plain] view plain copy

     discrete value =
shuffle : 0.3 0.2 0.4 0.1

【转】Algorithms -离散概率值(discrete)和重置、洗牌(shuffle)算法及代码的更多相关文章

  1. 《Algorithms算法》笔记:元素排序(3)——洗牌算法

    <Algorithms算法>笔记:元素排序(3)——洗牌算法 Algorithms算法笔记元素排序3洗牌算法 洗牌算法 排序洗牌 Knuth洗牌 Knuth洗牌代码 洗牌算法 洗牌的思想很 ...

  2. 从傅里叶级数(Fourier series)到离散傅里叶变换(Discrete Fourier transform)

    从傅里叶级数(Fourier series)到离散傅里叶变换(Discrete Fourier transform) 一. 傅里叶级数(FS) 首先从最直观的开始,我们有一个信号\(x(t)\)(满足 ...

  3. 深度学习原理与框架-Tensorflow基本操作-mnist数据集的逻辑回归 1.tf.matmul(点乘操作) 2.tf.equal(对应位置是否相等) 3.tf.cast(将布尔类型转换为数值类型) 4.tf.argmax(返回最大值的索引) 5.tf.nn.softmax(计算softmax概率值) 6.tf.train.GradientDescentOptimizer(损失值梯度下降器)

    1. tf.matmul(X, w) # 进行点乘操作 参数说明:X,w都表示输入的数据, 2.tf.equal(x, y) # 比较两个数据对应位置的数是否相等,返回值为True,或者False 参 ...

  4. 机器学习入门-概率阈值的逻辑回归对准确度和召回率的影响 lr.predict_proba(获得预测样本的概率值)

    1.lr.predict_proba(under_text_x)  获得的是正负的概率值 在sklearn逻辑回归的计算过程中,使用的是大于0.5的是正值,小于0.5的是负值,我们使用使用不同的概率结 ...

  5. Access自动编号的初始值设置及重置编号 转

    方法如下: ALTER TABLE tableName ALTER COLUMN Id COUNTER (100, 5) 其中:tableName为要修改的表名,Id为自动编号列,100为初始值,5为 ...

  6. SQL PARTITION BY:列值改变时重置计数

    现有数据如下: 需求:以科目为单位 对分数进行排序 SELECT *, ROW_NUMBER() OVER (PARTITION BY 科目 ORDER BY 分数 DESC) AS NUM FROM ...

  7. UVA11021 Tribles[离散概率 DP]

    UVA - 11021 Tribles GRAVITATION, n. “The tendency of all bodies to approach one another with a stren ...

  8. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  9. Access自动编号的初始值设置及重置编号

    项目上需要在Access数据库,发现自动编号的列无法设置初始值和步长,但是可以使用SQL语句来设置它. 方法如下: ALTER TABLE tableName ALTER COLUMN ID COUN ...

随机推荐

  1. Python xrange() 函数

    描述 xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器. 语法 xrange 语法: xrange(stop) xrange(start, stop[, ...

  2. poj 2451 Uyuw's Concert (半平面交)

    2451 -- Uyuw's Concert 继续半平面交,这还是简单的半平面交求面积,不过输入用cin超时了一次. 代码如下: #include <cstdio> #include &l ...

  3. H3C 网络层

  4. 2019-1-29-win10-uwp-使用-Microsoft.Graph-发送邮件

    title author date CreateTime categories win10 uwp 使用 Microsoft.Graph 发送邮件 lindexi 2019-01-29 16:36:3 ...

  5. Python--day65--模板语言之tags

    Tags for循环 普通for循环 <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% en ...

  6. P1014 高精度减法

    题目描述 给你两个很大的正整数A和B,你需要计算他们的差. 输入格式 输入一行包含两个正整数A和B,以一个空格分隔(A和B的位数都不超过 \(10^5\) ,但是B有可能比A大) 输出格式 输出一行包 ...

  7. jquery 选择多级父子元素

    <div class="box"> <div class="item"> <div class="out"&g ...

  8. 【50.54%】【BZOJ 1879】[Sdoi2009]Bill的挑战

    Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 649  Solved: 328 [Submit][Status][Discuss] Descriptio ...

  9. (转)学习C语言基本思路与参考书籍

    计算机行业发展非常快,大学里的教育基本都跟不上实际的社会需求.如果你所在的学校还在指定大家使用谭浩强的教材,或使用VC6.0来教大家上机实验,那你不妨看看本文,这里有一些建议可以帮助你不会脱离社会太远 ...

  10. IdentityServer4 Clients

    原文地址 Clients 的定义 Client是指那些从 identityserver获取 token的应用 通常需要为client定义下面通用的设置 唯一的client id secret, 如果需 ...