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

离散概率值(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=0; i<a.length; i++)
		{
			sum += a[i];
			if(sum >= r) return i;
		}
		return -1;
	}
	
	//重置(洗牌), 把数组值的顺序打乱
	public static void shuffle(double[] a)
	{
		int N = a.length;
		for(int i=0; i<N; ++i)
		{
			int r = i + StdRandom.uniform(N-i); //"[ )"不能达到N-i, 最大N-i-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=0; i<a.length; ++i){
			StdOut.print(a[i] + " ");
		}
		StdOut.println();
	}
}


输出:

 

 

discrete value = 2
shuffle : 0.3 0.2 0.4 0.1 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
### 回答1: 连续控制算法是指在控制系统中,控制量(如电压、流量等)是连续可变的算法。这些算法常用于模拟物理过程,如飞机飞行控制、机器人运动控制等。 离散控制算法是指在控制系统中,控制量是离散变化的算法。这些算法常用于数字电路设计、计算机程序控制等。 ### 回答2: Continuous control algorithms(连续控制算法)是一种用于控制连续系统的算法。连续系统指的是在时域上具有连续变化的系统,比如机械臂的转动角度、电机的转速、温度的变化等。连续控制算法能够实时地根据传感器的反馈信息,对控制信号进行连续的调节和优化,以实现对连续系统的精确控制。常见的连续控制算法包括PID控制、最优控制、自适应控制等。这些算法的输入和输出都是连续的变量,可以根据需要精确地调节控制信号的大小和变化率。 Discrete control algorithms(离散控制算法)是一种用于控制离散系统的算法离散系统指的是在时域上存在明确的时刻和状态的系统,比如嵌入式系统、数字电路等。离散控制算法根据离散的控制信号,在每个固定的时间步骤中对系统进行控制操作。这些操作包括切换开关状态、发送特定的数字信号等。离散控制算法的输入和输出都是离散的变量,通常通过逻辑运算、状态机等方式进行控制。常见的离散控制算法包括有限状态机、决策树、传感器融合算法等。这些算法的特点是运算速度快、实时性高,常用于嵌入式系统和自动化控制中。 ### 回答3: Continuous control algorithms和Discrete control algorithms是两种不同的控制算法。 Continuous control algorithms(连续控制算法)是指系统连续变化的控制算法。它们适用于输入和输出都是连续的系统。此类算法通过不断调整输入,以使系统输出在一定范围内持续变化,以实现精确的控制。连续控制算法通常使用微分方程模型来描述系统动态行为,并利用控制理论中的技术,如PID(比例、积分、微分)控制器,来实现系统的稳定、鲁棒性和性能优化等目标。 Discrete control algorithms(离散控制算法)是指系统离散变化的控制算法。它们适用于输入和输出都是离散的系统。此类算法通过在离散的时间点上调整输入,以使系统输出在一系列时间步骤中变化,从而实现控制目标。离散控制算法通常使用差分方程模型来描述系统动态行为,并通常基于反馈控制理论中的技术,如状态空间方法、最优控制方法或模型预测控制方法等,来实现系统的稳定、性能优化和鲁棒性等目标。 总之,连续控制算法适用于具有连续输入和输出的系统,而离散控制算法适用于具有离散输入和输出的系统。它们在系统建模、算法设计和控制目标等方面存在差异,并可以根据具体的应用领域和需求选择使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SpikeKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值