`
zwhc
  • 浏览: 264749 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

长度为 100万 的序列,从中随机抽取 25万 个数据。

阅读更多
长度为 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);
	}

0
0
分享到:
评论

相关推荐

    小飞侠随机抽取器

    "小飞侠随机抽取器"是一款专为数据随机抽取和简单抽奖场景设计的软件工具。在各种需要公平、公正选取元素的场合,如抽奖活动、课堂抽签、名单筛选等,这款软件都能发挥其功能。它允许用户自定义抽取项,意味着你可以...

    m序列的抽取,m序列的产生,matlab

    m序列,全称为最大长度线性移位寄存器序列(Maximum Length Linear Shift Register Sequence),是通信和数字信号处理领域中的一个重要概念。这种序列具有良好的统计特性,如极低的自相关性和互相关性,常用于同步、...

    1-1000个数字中随机抽取1组数据

    标题 "1-1000个数字中随机抽取1组数据" 涉及到的主要知识点是计算机编程中的随机数生成和数组操作。在许多应用中,如模拟实验、数据分析或者游戏开发,都需要生成随机数。在这个场景下,我们需要从1到1000的整数范围...

    随机抽取记录软件

    在IT领域,随机抽取记录软件是一种非常实用的工具,尤其在数据分析、教育评估、抽奖活动或者市场调研等场景中。这种软件允许用户从一组数据中按照预设规则随机选取特定的记录,确保了过程的公正性和随机性。下面将...

    m序列的抽取_m序列

    **m序列,全称为最大长度线性移位寄存器序列(Maximum Length Linear Shift Register Sequences),在通信、密码学、数字信号处理等领域有广泛应用。本文将深入探讨m序列的生成原理、抽取方法、特性以及优选对的选取...

    Gray码是一个长度为2n的序列。序列中无相同的原图,每个元素都是长度为n位的串,相邻元素恰好只有一位不同。用分治策略设计一个算法对任意的n构造相应的Gray码。

    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的任意长度伪随机序列产生方法

    本文探讨了一种利用数字信号处理器(DSP)生成任意长度伪随机序列的方法,这种方法基于线性同余算法,并结合了Analog Devices公司的TigerSHARC20XS DSP芯片的特性,为系统设计提供了更灵活的解决方案。 线性同余...

    随机序列产生程序

    在计算机科学和统计学中,随机序列是一种遵循特定概率分布的数字序列,它们在各种领域都有广泛应用,如模拟、加密、数据分析以及机器学习等。MATLAB作为一种强大的数值计算环境,提供了丰富的函数和工具来生成不同...

    时间序列预测数据时间序列预测数据

    通过理解并应用这些代码,我们可以构建一个强大的预测系统,该系统不仅能捕捉时间序列数据的内在规律,还能综合考虑多个相关因素的影响,从而为决策者提供有价值的未来趋势预测。在实际操作中,我们还需要关注模型的...

    随机抽取名字

    【随机抽取名字】项目是一个基于C#编程语言开发的应用,旨在提供一种有趣的方式来随机选取名字。这个项目可能被用于各种场合,比如抽奖活动、课堂点名或者游戏中的角色选取等。下面将详细介绍该项目可能涉及的C#编程...

    C语言随机抽取小程序

    在"随机抽人"这个场景中,假设我们有一个人员列表,需要从中随机选择一个人。我们可以将每个人员编号,然后生成一个在这个编号范围内的随机数。以下是如何实现这个功能的一个例子: ```c #include #include #...

    基于Excel的随机信息抽取工具.pdf

    为了保证公平性,本工具利用Excel及其VBA编程功能,构建了一个随机信息抽取工具。这个工具不仅能够提高工作效率,而且确保了公平公正公开的抽取结果。 首先,我们要建立一个信息库,例如内部专家库,通过Excel的...

    随机序列的检验

    除了卡方检验,还有其他统计方法可以用于验证序列的随机性,如Pearson's runs test,它检查序列中连续相同元素的运行长度,以及Shannon entropy,这是一种衡量序列信息熵的指标,随机序列的熵应该是最大值。...

    C# 制作 随机抽取软件

    综上所述,开发这个C#随机抽取软件涉及到的知识点包括但不限于:C#基础语法、面向对象编程、.NET Framework 4.0、Windows Forms编程、事件处理、键盘事件、文件I/O、数据解析、图片显示以及用户交互设计。每个环节都...

    小飞侠经典随机抽取器

    2. **数字抽取**:对于需要进行数值分析或随机生成测试数据的情况,数字抽取功能尤为重要。用户可以设置抽取范围和数量,生成随机数序列,这对于软件测试中的边界值分析、压力测试等环节很有帮助。 3. **自定义抽取...

    DNA序列随机生成_跑最长公共子序列.c

    DNA序列随机生成_跑最长公共子序列.c

    范围内随机抽取滚动效果

    在IT行业中,随机抽取功能广泛应用于各种场景,如投标、年会、摇号或点名等。"范围内随机抽取滚动效果"是一种特定的实现方式,它允许用户在设定的数值范围内进行无偏的随机选择,并且具有动态滚动的视觉效果,增加...

    伪随机序列产生及其特性研究

    **m序列**是最著名的二进制伪随机序列之一,由n级线性反馈移位寄存器生成,其周期长度为\(2^n - 1\)。 m序列具有以下性质: - 周期长度为\(2^n - 1\)。 - 在一个周期中,“1”出现\((2^{n-1} - 1)\)次,“0”出现\...

    xitongbianshi.rar_M序列 Matlab_m 序列_产生M序列_随机序列

    M序列,全称为最大长度序列或伪随机噪声序列(Maximum Length Sequence, M-sequence),在无线通信、密码学和测试信号生成等方面有着广泛应用。本资料“xitongbianshi.rar”似乎提供了一个Matlab实现,用于生成M序列...

Global site tag (gtag.js) - Google Analytics