随机获取用户定义的字符串

来源:互联网 发布:淘宝等待揽收最多几天 编辑:程序博客网 时间:2024/05/22 12:25

此类需要使用之前讲到的IntegerWeightRandom类;

示例:

给定"a"赋予权重100,"b"的权重为50,则getNextString()时取"a"的概率要更大;


package org.xiazdong.util;/*给定字符串集合,设定每个字符串的权重,返回随机字符串*/public class StringRandom {private String[] datas;private IntegerWeightRandom random = new IntegerWeightRandom();public StringRandom(String[]datas){this.datas = datas;}public void setStringWeight(int weight,int idx){if(datas.length>idx)random.addWeightNumber(weight, idx);}public String getNextString(){int idx = random.getNextInt();return datas[idx];}}


测试类:


package test.org.xiazdong.util;import org.junit.Test;import org.xiazdong.util.StringRandom;import junit.framework.TestCase;public class StringRandomTest extends TestCase {@Testpublic void testGetNextString() {StringRandom random = new StringRandom(new String[] { "a", "b", "c" });random.setStringWeight(10, 0);random.setStringWeight(20, 1);random.setStringWeight(30, 2);for (int i = 0; i < 10; i++)System.out.println(random.getNextString());}}