0 0

求解决思路。。0

假设有100个数字 代表100种不同的物品

每次随机取其中一个使用 

使用频率越高的  下次循环取用的时候 随机到这个数的机率就更大。。
反之随机到的机率就越小。。

比如  1234567890   9号在10次随机取中 被抽到 5次  3被抽到3次 7被抽1次  4=1   1=1 

他们在第11次随机抽取的 概率 大概为  93“741”25680  大概是这么个排位。
求这个解决思路。。

741是同概率级别的 都被抽过1次 有限概率比后面5位高。。

2012年7月12日 09:11

11个答案 按时间排序 按投票排序

0 0

好吧,既然一个不行,那就来俩,嘿嘿
概率是分子/分母,减少分子不可行,会造成某数概率直接为0,所以只能增加分母。
有两个数组,A和B,假设,A里面放的是1,2,3,4,5,6,7,8,9,0共10个数,对应10个物品,B里面没有数,只是有个固定长度为10。
取物品分两步,第一步,从A里面,随机取10个数,放到B里,然后再从B里随机取一个数,这个数代表的就是实际取到的物品。
假设第一次取到的物品依然是5,那么在B里面固定放一个5,第二次取的时候,从A里随机取9个数,放入B,然后再从B里随机取物品。
这样就能满足概率变大,具体变大的幅度,以及概率具体是多少,你自己算算,我懒得算了,太麻烦了

2012年7月16日 15:58
0 0

带权重的随机,可以用伪随机模拟,参考一下代码:
private static void test3() {
// 数=权重,0=20%,1=30%,2=50%
int i=0;
Map<String, Integer> probabilityStatMap = new HashMap<String, Integer>();
while(i++<100000) {
double d = Math.random();
String key = null;
if(d<=0.2d)  {
key="0";
} else if (d<=0.5d) {
key="1";
} else {
key="2";
}
Integer v = probabilityStatMap.get(key);
probabilityStatMap.put(key, v==null?1:(v+1));
}

for(Entry<String, Integer> entry: probabilityStatMap.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}

2012年7月13日 15:22
0 0

这个我做过类似的,我做的是蚁群算法的应用。
/// <summary>
        /// 数组中放入了每个节点的概率值,函数返回一个int值,即被抽到的节点的index
        /// </summary>
        /// <param name="aa"></param>
        /// <returns></returns>
        public static int getNum(double[] aa)
        {
            //获取0.0到1.0间的一个数
            double rd = new Random(GetRandomSeed()).NextDouble();
            double para = 0.0;
            int i = 0;
            for (int j = 0; j < aa.Length; j++)
            {
                para += aa[j];
                i = j;
                if (para > rd) break;
            }
            return i;
        }
/// <summary>
        /// 提高随机数不重复概率的种子生成方法
        /// </summary>
        /// <returns></returns>
        static int GetRandomSeed()
        {
            byte[] bytes = new byte[4];
            //使用加密服务提供程序 (CSP)提供的实现来实现加密随机数生成器 (RNG)。无法继承此类。
            System.Security.Cryptography.RNGCryptoServiceProvider rng =
                new System.Security.Cryptography.RNGCryptoServiceProvider();
            rng.GetBytes(bytes);//用经过加密的强随机值序列填充字节数组。
            return BitConverter.ToInt32(bytes, 0);
        }

主要用的这两个方法,数组里面存放的是每个数字被查到的概率!

2012年7月13日 13:26
0 0

用信息搜索里的反馈排名很容易的吧?

2012年7月13日 10:53
0 0

public static List<Integer> getRandomList(List<Integer> list){
double r = Math.random();
int index = (int)(r*list.size());
list.add(list.get(index));
return list;
}

2012年7月12日 23:11
0 0

http://www.blogjava.net/willpower88/archive/2010/08/31/330437.html

2012年7月12日 22:18
0 0

带权重的随机数。。最直接的想法:

产生一个在(0--n)范围的随机数,根据权来确定每个记录所对应的范围,
比如1,2,3三个权,将n分为6份,产生的随机数对应那个范围,就是那个。

在你例子 就是 1234567890 对应的权重是 1031001050。为了避免0 全部加1 为2142112161,n=2+1+4+2+1+1+2+1+6+1=21,那么【1,2】表示1,【3,3】表示2,【4,7】表示3.。。。

2012年7月12日 22:16
0 0

是不是操作系统中cache的算法?

2012年7月12日 13:20
0 0

建一张商品取数次数表,比如:
商品,次数
0     4
1     4
2     6
3     5
4     0
5     9
6     3
7     12
8     10
9     2

你用每个商品的次数除所有商品次数之和得到的数乘100(如果想更精确可以乘1000,10000)得到循环次数x,然后循环x次,判断每次取的是不是那个商品,是的话退出,不是的话继续循环,这样次数越多的循环的次数越多,概率越大

2012年7月12日 12:59
0 0

概率这事很操蛋,下面我来说说我的办法
一个死循环
插取一次,比如第一次插取是9,那么向0,1,2,3,4,5,6,7,8,9这10个数中增加一个9,变成0,1,2,3,4,5,6,7,8,9,9
依此类推,一切OK
PS:我的解决办法是完全可以满足楼主要求的,但是楼主的问题的描述可能跟实际情况有出入,可依此改造

2012年7月12日 10:09
0 0

假设有1234567890共10个数字,从里面进行随机取数,假设第一次取到5,为了让概率变大,将1234567890变为12345678905,然后第二次从12345678905里随机取数,5的概率就变大了,具体变大的幅度,可自己控制

2012年7月12日 09:32

相关推荐

    四年级数学上册5解决问题的策略5.1.1用列表的方法解决求两积之和差的实际问题教学反思素材苏教版

    ### 四年级数学上册5解决问题的策略5.1.1用列表的方法解决求两积之和(差)的实际问题教学反思 #### 教学背景与目标 在四年级数学的教学过程中,解决问题的能力培养是非常重要的一个环节。本章节旨在通过具体的实例...

    空间中线线角线面角面面角成法原理和求法思路.doc

    《空间中线线角线面角面面角成法原理和求法思路》 空间几何是数学中的一个重要分支,尤其在解决三维空间中的线线角、线面角、面面角问题时,需要掌握特定的方法和原理。以下将详细阐述这些角度的成法和求解思路。 ...

    解决椭圆部分问题的新思路——化椭为圆.pdf

    《解决椭圆部分问题的新思路——化椭为圆》这篇文档介绍了一种创新的方法来处理椭圆相关的数学问题,即通过坐标变换将椭圆转换为圆,从而简化问题的求解过程。这种方法主要适用于处理椭圆与直线的关系以及椭圆中的弦...

    程序设计思路.docx

    在文档"程序设计思路.docx"中,主要探讨了三个重要的数值积分算法的实现:复化梯形求积、复化Simpson求积和Romberg求积。这些算法常用于解决数学上的连续函数积分问题,尤其是在实际应用中,当解析求解不可能或者...

    ASP.NET递归法求阶乘解决思路

    总结来说,***递归法求阶乘的思路展示了如何在.NET环境中实现递归算法,它简洁明了地表达了递归的基本概念和实现方式。但是,由于递归的效率和栈空间的问题,开发者在设计程序时应根据具体情况谨慎选择递归或迭代...

    小学数学常用的十一种解题思路.doc

    为了让孩子们更好地理解和解决数学问题,教师和家长通常会教授一些实用的解题思路。这其中,“小学数学常用的十一种解题思路”就是一种非常重要的学习工具,它不仅有助于学生在数学学习中取得进步,还能在日常生活中...

    Java编程经典练习题[附带解题思路

    - **题目描述**:求两个数 m 和 n 的最大值和最小值。 - **解题思路**: - 使用三元运算符 `(a &gt; b) ? a : b` 来快速计算出最大值或最小值。 #### 7. 字符统计 - **题目描述**:统计输入字符串中英文字母的出现...

    求线面角的三种常见思路方法.doc

    在立体几何中,求线面角是常见的问题,对于这类问题,有多种解决策略。本文通过2009年XX卷理科第18题为例,探讨了三种求解线面角的常见方法,并对这些方法进行了比较分析。以下是每种方法的详细介绍: 1. 直接作出...

    解决椭圆部分问题的新思路——化椭为圆.doc

    《解决椭圆部分问题的新思路——化椭为圆》 椭圆是数学中重要的曲线之一,其几何特性丰富,但在处理涉及椭圆的特定问题时,传统的解法往往较为复杂。本文提出了一种创新的思路——化椭为圆,旨在简化椭圆问题的求解...

    小学数学-十一种解题思路.pdf

    小学数学的解题思路是培养学生逻辑思维和问题解决能力的关键,常见的十一种解题思路包括直接思路、顺向综合思路和逆向分析思路等。这些方法帮助学生在面对各种数学问题时能找到有效的解决路径。 首先,直接思路是最...

    小学数学常用的11种解题思路.docx

    逆向分析思路的核心是,从问题的结果出发,反向推理出解决问题所需的条件。这种思路通常适用于那些直接解法难以入手的问题。以两船相遇位置变化的问题为例,我们从最终相遇点的差值出发,逆向推理出两次相遇的时间...

    C++经典题型。如求鞍点等。

    这是一个典型的贪心算法问题,解决思路是将金额转换为整数,然后使用贪心算法来寻找最少的钞票组合。 在这个问题中,使用了C++语言的基本知识,包括数组、循环、条件语句等。同时,这个问题也考察了程序员对贪心...

    小学数学常用的十一种解题思路.docx

    常见的解题思路有直接思路和逆向分析思路,这两种方法在解决不同类型的数学问题时各有优势。 **直接思路**,也称为常规思路,主要依赖于分析、综合和归纳等逻辑推理方法,直接寻找解决问题的路径。例如在例1中,...

    空间中线线角,线面角,面面角成法原理及求法思路.doc

    这些角的定义和求解方法对于理解和解决空间几何问题至关重要。 1. **异面直线所成的角** 异面直线是指在同一个三维空间中既不相交也不平行的两条直线。它们所成的角的范围是0°到90°之间。求异面直线所成的角通常...

    动态规划问题解题思路和总结

    - **问题描述**: 给定一个由非负整数组成的三角形,要求从顶点出发,每一步可以选择向左下或右下移动,直到到达最底层,并求出沿路径数值总和的最大值。 - **状态定义**: 设定状态\( d(i, j) \)表示从位置\((i, j)\)...

    平台运维中的工作思路.docx

    - **求效率**:强调提高工作效率,快速响应用户需求,提升用户满意度。 #### 运维工作原则 - **规范化原则**:强调规范化的重要性,认为规范化是有效执行、落实和资源调度的基础,有助于控制运维风险。 - **合理化...

    平台运维中的工作思路.pdf

    这要求运维团队不仅要有扎实的技术基础,还需要有明确的工作思路和理念。 【运维工作目标】 运维工作的首要目标是提高用户满意度。这意味着运维团队需要深入了解用户需求,及时响应用户的问题,提供贴心且高效的...

    中文问题解决方法集会.doc

    ### 中文问题解决方法集会知识点总结 #### 一、背景与概述 在Java开发过程中,尤其是使用JSP(Java Server Pages)进行Web应用开发时,开发者经常会遇到中文乱码的问题。这些问题主要出现在JSP页面的显示、表单数据...

Global site tag (gtag.js) - Google Analytics