求助:依概率随机选择问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/09/28 17:29:50
问题:有5个点(1,2,...,5),每个点被选择的概率大小向量为:
P=(v(1)/sum(v),v(2)/sum(v),...,v(5)/sum(v)),
其中向量v=(v(1),v(2),...,v(5))已知。
我要在这5个点中每次依概率P选择一个点,并重复此操作3次。请问用Matlab语言如何实现,非常感谢!
即在点1,2,...,5中选择一个点,且每点被选到的概率分别为:
v(1)/sum(v),v(2)/sum(v),...,v(5)/sum(v)。
并重复此操作3次。请问各位该怎么编写?

不会matlab不过你既然学计算机 有了解题思路就行了吧?语言种类多到哪去了。。。

一个外循环3次

然后在里面随机生成一个1 - sum(v)的数

然后如果数字在 1-v(1) v(1) - v(2)等区间内时,向随便哪个列表内加入 代表这几个区间的字浮, 比如"12345"分别代表随即生成的数在 上面5个区间内。

最后你只要算出总循环次数,和里面1,2,3,4,5的个数,就能知道他们分别的概率是多少了。

你可以参考我刚写的java程序。程序要生成当扔2个赛子时,点数生成情况和概率。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package diceandprobability;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

/**
*
* @author Yichuan
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

final int TOTAL_ROLL = 1000000;
final int NUM_DICE = 2;