一个文件含有n个元素,只能遍历一遍要求等概率取出其中之一。

解答:

抽签,5个人抽取5根签,只有一个签为中签。每个人概率为1/5.

将这n个元素依次遍历,每次得到的数(第L个)取随机数r,r%L==0(0-L之内)

var pickOne(file){

  int lenth = 1;

  while(lenth <= file.size){

    if(random()%lenth == 0){

      pick = file[lenth];

    }

    lenth++;

  }

return pick;

}

1,2,3,4,5,6,7

第一个数:pick = 1 概率100%;

第二个数:pick被替换为第二个数的概率为1/2,前面的数选到概率为1/2

第三个数:pick被替换为第三个数的概率为1/3,前面的数选到概率为1/2*(1-1/3)

第四个数:pick被替换为第四个数的概率为1/4,之前概率为1/3*(1-1/4)

第n个数:pick被替换为第n个数的概率为1/n

时间: 2024-09-26 20:09:41

一个文件含有n个元素,只能遍历一遍要求等概率取出其中之一。的相关文章

Ex 2_23 如果一个数组超过半数的元素都相同时,该数组被称为含有一个主元素..._第二次作业

将数组A划分为两个数组A1和A2 ,各含有A的一半元素或一半多一个.若A中含有主元素x,则A1和A2中至少有一个数组含有主元素x,对A1和A2递归地计算有无主元素,若A只含有一个元素,则A的主元素就是这个元素,否则计算出A1和A2的主元素x1和x2: 若x1和x2都不存在,则A不存在主元素 若x1和x2有一个存在,则检查这个元素是否为A的主元素 若x1和x2都存在且不相等,则分别检查这个元素是否为A的主元素 若x1和x2都存在且相等,则这个元素就是A的,主元素 1 package org.xiu

遍历一个文件夹下的所有文件

一个老问题,但是总有人爱问,遍历一个文件夹下的所有文件,并输出文件信息. using System; using System.Collections.Generic; using System.ComponentModel;using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace IOTest { public partial class For

Java遍历一个文件夹下的全部文件

Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常使用的构造器有: 1.public File(String pathname){} 在pathname路径下创建文件对象 2.public File(String path,String name){} 在path參数指定的文件夹中创建具有给定名字的File对象.假设path为null,构造器将使用

编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中

#include<iostream> #include<string> #include<vector> #include<fstream> using namespace std; int main(int argc,char *argv[]) { ifstream input(argv[1]); vector<string> vec; string tmp; while(getline(input,tmp)) { vec.push_back(

移动含有空格的文件到另一个文件夹

1 [[email protected] ~]# ll b 2 total 0 3 -rw-r--r--. 1 root root 0 Jul 1 01:27 1 4 -rw-r--r--. 1 root root 0 Jul 1 01:27 2 3 5 -rw-r--r--. 1 root root 0 Jul 1 01:27 4 移动b文件夹的文件到a(b中有个文件含有空格) 1 find . -type f -ecec mv {} ../a \; 1 #!/usr/bin/env pyth

Ant步步为营(5)用for和foreach的方法遍历一个文件夹,查找到某个文件并删除

今天有个任务是要删除VM上的某个文件夹下的两个jar包.不过这个任务没有分配给我,而是分配给俺的师傅,哈哈.不过我还是自己动手写了一些脚本在本地模拟一下删除某个指定文件. build.xml <?xml version="1.0"?>    <project name="ForTest" default="build" >    <property file="build.properties"&

键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:&quot;java&quot;,&quot;txt&quot;)作为key, 用个数作为value,放入到map集合中,遍历map集合

package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Set; /** 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt&qu

遍历一个文件夹所有文件

利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件 标签: c++ 2015-06-14 12:22 1561人阅读 评论(0) 收藏 举报 分类: c++(41) 本文利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件,最基础的历遍所有文件.一下代码尚无法解决文件名为中文时的乱码问题,以及无法分别无后缀的文件名和文件夹名的区别. FindFirstFile()用于获得指定目录的第一个文件.其原型为: lpFileN

【文件】读取一个文件夹下所有的jpg图片

今天做视频处理的时候,发现给的视频是用jpg图片的形式给出的,名字的命名规律性不是很强.就想找一种通用的遍历文件夹下图片的方法. 开始在网上找到了下面这份代码,发现只能读取所有的文件夹,文件都被跳过了 后来发现,原来是判断的if语句出了问题.dwFileAttributes有很多种属性如: FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_COMPRESSED FILE_ATTRIBUTE_DIRECTORY FILE_ATTRIBUTE_HIDDEN FILE_ATT