长度为 100万 的序列,从中随机抽取 25万 个数据。
算法:
1、先在 0-s 里随机取一数 [R];
2、将 [R] = [0], [0]将不再使用
3、先在 1-s 里随机取一数 [R1];
...
并列出随机数取了三次以上的数据
/**
* 长度为 s 的序列,从中随机抽取 n 个数据。
* 算法:
* 1、先在 0-s 里随机取一数 [R];
* 2、将 [R] = [0], [0]将不再使用
* 3、先在 1-s 里随机取一数 [R1];
* ...
* @param s
* @param n
* @return
*/
private static int[] getRandom(int s, int n)
{
if(s<=0 || n<=0)
{
throw new RuntimeException("必须:s>0 且 n>0 ");
}
if(s<n)
{
throw new RuntimeException("必须:s>=n ");
}
int[] data = new int[n];
int[] temp = new int[s];
for(int i=0; i<s; i++)
{
temp[i] = i;
}
Random random = new Random();
random.setSeed(System.currentTimeMillis());
for(int i=0; i<n; i++)
{
int idx = random.nextInt(s-i)+i;
data[i] = temp[idx];
temp[idx] = temp[i];
}
return data;
}
private static void print(int[] data)
{
for(int i=0; i<data.length; i++)
{
System.out.println(data[i]);
}
}
/**
* 长度为 s 的序列,从中随机抽取 n 个数据。
* 算法:
* 1、先在 0-s 里随机取一数 [R];
* 2、将 [R] = [0], [0]将不再使用
* 3、先在 1-s 里随机取一数 [R1];
* ...
*
* 并列出随机数取了三次以上的数据
* @param s
* @param n
* @return
*/
private static int[] getRandom02(int s, int n)
{
if(s<=0 || n<=0)
{
throw new RuntimeException("必须:s>0 且 n>0 ");
}
if(s<n)
{
throw new RuntimeException("必须:s>=n ");
}
int[] data = new int[n];
int[] temp = new int[s];
int[] selectCount = new int[s];
for(int i=0; i<s; i++)
{
temp[i] = i;
selectCount[i] = 0;
}
Random random = new Random();
random.setSeed(System.currentTimeMillis());
for(int i=0; i<n; i++)
{
int idx = random.nextInt(s-i)+i;
data[i] = temp[idx];
selectCount[idx]++;
if(selectCount[idx]>3) //并列出随机数取了三次以上的数据
{
System.out.println(selectCount[idx] + ":" + idx);
}
temp[idx] = temp[i];
}
return data;
}
public static void main(String[] args)
{
//Collections.shuffle(null);
getRandom02(1000000, 250000);
}
分享到:
相关推荐
"小飞侠随机抽取器"是一款专为数据随机抽取和简单抽奖场景设计的软件工具。在各种需要公平、公正选取元素的场合,如抽奖活动、课堂抽签、名单筛选等,这款软件都能发挥其功能。它允许用户自定义抽取项,意味着你可以...
m序列,全称为最大长度线性移位寄存器序列(Maximum Length Linear Shift Register Sequence),是通信和数字信号处理领域中的一个重要概念。这种序列具有良好的统计特性,如极低的自相关性和互相关性,常用于同步、...
标题 "1-1000个数字中随机抽取1组数据" 涉及到的主要知识点是计算机编程中的随机数生成和数组操作。在许多应用中,如模拟实验、数据分析或者游戏开发,都需要生成随机数。在这个场景下,我们需要从1到1000的整数范围...
在IT领域,随机抽取记录软件是一种非常实用的工具,尤其在数据分析、教育评估、抽奖活动或者市场调研等场景中。这种软件允许用户从一组数据中按照预设规则随机选取特定的记录,确保了过程的公正性和随机性。下面将...
**m序列,全称为最大长度线性移位寄存器序列(Maximum Length Linear Shift Register Sequences),在通信、密码学、数字信号处理等领域有广泛应用。本文将深入探讨m序列的生成原理、抽取方法、特性以及优选对的选取...
n=3时,Gray码:000,010,011,001, 101,111,110,100 n=4,时,Gray码:0000,0010,0011,0001,0101,0111,0110,0100, 1100,1110,1111,1101,1001,1011,1010,1000 从上面可以看出如下规律:从n=...
随机抽取软件是一种用于在一组数据中随机选取特定数量或特定元素的工具,广泛应用于各种领域,如教育、科研、抽奖活动、数据分析等。这类软件通常具有简单易用的界面和高度自定义的功能,以满足不同用户的需求。在...
本文探讨了一种利用数字信号处理器(DSP)生成任意长度伪随机序列的方法,这种方法基于线性同余算法,并结合了Analog Devices公司的TigerSHARC20XS DSP芯片的特性,为系统设计提供了更灵活的解决方案。 线性同余...
An,求这个序列中最长的递减子序列的长度M, 以及该序列可以划分成这种子序列的个数N 如序列: 300 250 252 275 200 138 245 折分成的子序列分别为 300 275 200 138 252 245 250 其中最长序列为: 300 275 200 138 ...
2. **时间序列分解**:通常,时间序列可以被分解为四个主要组成部分:趋势(Trend)、季节性(Seasonality)、周期性(Cyclicity)和随机性(Randomness)。趋势是指数据随时间的长期上升或下降;季节性是周期性的...
通过理解并应用这些代码,我们可以构建一个强大的预测系统,该系统不仅能捕捉时间序列数据的内在规律,还能综合考虑多个相关因素的影响,从而为决策者提供有价值的未来趋势预测。在实际操作中,我们还需要关注模型的...
【随机抽取名字】项目是一个基于C#编程语言开发的应用,旨在提供一种有趣的方式来随机选取名字。这个项目可能被用于各种场合,比如抽奖活动、课堂点名或者游戏中的角色选取等。下面将详细介绍该项目可能涉及的C#编程...
在"随机抽人"这个场景中,假设我们有一个人员列表,需要从中随机选择一个人。我们可以将每个人员编号,然后生成一个在这个编号范围内的随机数。以下是如何实现这个功能的一个例子: ```c #include #include #...
为了保证公平性,本工具利用Excel及其VBA编程功能,构建了一个随机信息抽取工具。这个工具不仅能够提高工作效率,而且确保了公平公正公开的抽取结果。 首先,我们要建立一个信息库,例如内部专家库,通过Excel的...
除了卡方检验,还有其他统计方法可以用于验证序列的随机性,如Pearson's runs test,它检查序列中连续相同元素的运行长度,以及Shannon entropy,这是一种衡量序列信息熵的指标,随机序列的熵应该是最大值。...
综上所述,开发这个C#随机抽取软件涉及到的知识点包括但不限于:C#基础语法、面向对象编程、.NET Framework 4.0、Windows Forms编程、事件处理、键盘事件、文件I/O、数据解析、图片显示以及用户交互设计。每个环节都...
游程定理描述了在一个理想的随机序列中,游程的长度分布应该遵循特定的统计规律。通过比较LFSR生成的序列与这些理论值,我们可以评估其随机性质量。 在实际应用中,如果LFSR产生的序列满足游程定理和其他随机性测试...
2. **数字抽取**:对于需要进行数值分析或随机生成测试数据的情况,数字抽取功能尤为重要。用户可以设置抽取范围和数量,生成随机数序列,这对于软件测试中的边界值分析、压力测试等环节很有帮助。 3. **自定义抽取...
DNA序列随机生成_跑最长公共子序列.c
在IT行业中,随机抽取功能广泛应用于各种场景,如投标、年会、摇号或点名等。"范围内随机抽取滚动效果"是一种特定的实现方式,它允许用户在设定的数值范围内进行无偏的随机选择,并且具有动态滚动的视觉效果,增加...