读取文件中的随机一行 Random Probability

假设有一个文本文件,文件中有若干行。要求返回随机的一行。每行的被选概率相同。
两种情况:
1、如果文件很大,不能全放入内存
2、如果是文件流

大文件的特点是不能载入内存随机读取,文件流的特点是只能读取一次。

//伪代码
i = 1
chosen_line = ""
while line has next:
	# random returns a uniform random number in [0,1)
	if random() < 1/i:   
		chosen_line = line
		i += 1
	line = line.next
return chosen_line

类似随机选取问题:对于整数m和n,其中m<n,输出0~n-1范围内m个随机整数的有序列表,不允许重复。

void GenKnuth(int m, int n) 
{ 
	for(int i=0; i<n; ++i) 
	{ 
		if((bigrand()%(n-i)) < m) 
		{ 
			cout<<i<<endl; 
			--m; 
		}
	}
}

计算每个i被输出的概率,会发现都是m/n,因此是等概率的随机选取。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 概率随机过程是计算机科学与工程领域的重要概念。概率是描述随机现象发生的可能性的数学工具,而随机过程则是描述随机现象随时间变化的数学模型。 在计算机科学概率随机过程有着广泛的应用。首先,它们可以用于建立模型来分析和解决许多实际问题。例如,在网络通信,可以使用概率模型来研究数据包的传输延迟以及网络拥塞的可能性。此外,在机器学习算法概率随机过程也可以用于建立模型来处理不确定性和噪声。 其次,在计算机网络和分布式系统概率随机过程也发挥着重要的作用。通过基于概率的分析,可以评估网络的性能和可靠性,设计有效的路由和调度算法,以及优化系统的吞吐量和响应时间。 此外,在算法设计和分析概率随机过程也可以用于研究算法的平均情况时间复杂度和概率性能保证。通过使用随机过程的方法,可以更好地理解算法在不同输入情况下的表现,并提供更好的算法设计指导。 总之,概率随机过程对于计算机科学和工程领域的发展具有重要的意义。它们不仅是解决实际问题的有力工具,还为算法设计和分析提供了强大的理论基础。因此,对于从事计算机科学与工程的人来说,掌握概率随机过程的基础知识是非常重要的。 ### 回答2: 概率论和随机过程是计算机科学的重要概念。概率论是研究随机现象可能发生的事件的数学工具。它可以用来量化事件发生的可能性,并提供建立决策模型的基础。在计算机科学概率论广泛应用于算法分析、机器学习、数据挖掘等领域。 随机过程是一个随机变量序列的数学描述。它涉及到随机事件在时间上的变化。在计算机科学随机过程用来描述那些具有随机性的计算问题,比如网络传输的数据包丢失、分布式系统的任务调度等。通过建立适当的随机过程模型,可以对这些问题进行分析和优化。 CSDN(China Software Developer Network)是一个国内知名的开发者社区,为广大开发者提供学习、交流和分享的平台。在CSDN上,概率论和随机过程可以作为计算机科学相关的主题进行探讨和讨论。开发者可以在专栏、论坛、博客等地方发布自己的观点和研究成果,与其他开发者进行交流和互动。 通过CSDN,开发者可以了解概率论和随机过程在计算机科学的应用案例,探索相关的算法和技术,提高自己的编程水平和解决问题的能力。CSDN为开发者提供了一个共享知识和经验的平台,促进了概率论和随机过程在计算机科学领域的进一步研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值