标签: random-access

是否存在随机可访问的伪随机数生成器?(最好是开源)

首先,有一个随机访问随机数生成器,你不仅可以按顺序生成随机数,因为我们都习惯了,假设rand100()总是生成0-100的值:

for (int i=0;i<5;i++)
   print rand100()

output: 
14
75
36
22
67
Run Code Online (Sandbox Code Playgroud)

但也随机访问任何随机值,如:

只要您没有更改种子,rand100(0)就会输出14

rand100(3)总是输出22

rand100(4)总是输出67

等等...

我实际上发现了一个开源生成器算法,但是你不能改变种子.我知道伪随机性是一个复杂的领域; 我不知道如何改变它来添加该功能.

是否有可播种的随机访问随机数生成器,最好是开源?还是有一个更好的术语我可以谷歌获取更多信息?

如果没有,我的问题的第2部分是,是否有任何可靠的随机开源传统可种子伪随机数生成器,所以我可以将它移植到多个平台/语言,同时为任何给定的种子保留每个平台的一致值序列?

random random-access

14
推荐指数
3
解决办法
1226
查看次数

如何使用C#将字符插入文件

我有一个巨大的文件,我必须在特定的位置插入某些字符.在C#中最简单的方法是什么,而不是再次重写整个文件.

.net c# file random-access

13
推荐指数
1
解决办法
9008
查看次数

FileInputStream.skip()执行搜索吗?

我想将最后10MB的可能大文件复制到另一个文件中.理想情况下,我会使用FileInputStream,skip()然后read().但是我不确定skip()的性能是否会很糟糕.skip()通常是使用下面的文件搜索实现的,还是实际读取和丢弃数据?

我知道RandomAccessFile,但我对是否可以使用FileInputStream代替它感兴趣(RandomAccessFile很烦人,因为API是非标准的).

java inputstream random-access seek

13
推荐指数
1
解决办法
9738
查看次数

Python随机访问文件

是否有Python文件类型用于访问随机行而不遍历整个文件?我需要在一个大文件中搜索,将整个内容读入内存是不可能的.

任何类型或方法将不胜感激.

python file-io file random-access large-files

13
推荐指数
3
解决办法
1万
查看次数

如果将ArrayList引用为List,为什么ArrayList性能会有所不同?

kjellkod的文章中提到过,如果我们传入作为参数ArrayList接收的方法List,那么我们会失去性能,因为ArrayList实现了额外的RandomAccess接口.文章示例:

// SLOWER: as shown in http://ideone.com/1wnF1
private static void linearInsertion(Integer[] intArray, List<Integer> list) {
[...]
int list_size = list.size();
for (int i = 0; i < list_size; i++) {
if (integer.compareTo(list.get(i)) >= 0) { // ... more code

// FASTER: as shown in http://ideone.com/JOJ05
private static void linearInsertion(Integer[] intArray, ArrayList<Integer> list) {
[...]
int list_size = list.size();
for (int i = 0; i < list_size; i++) {
if (integer.compareTo(list.get(i)) >= 0) …
Run Code Online (Sandbox Code Playgroud)

java iteration time arraylist random-access

13
推荐指数
1
解决办法
314
查看次数

随机访问gzip流

我希望能够随机访问gzip压缩文件.我可以负担得起对它进行一些预处理(比如构建某种索引),只要预处理的结果比文件本身小得多.

有什么建议?

我的想法是:

  • 破解现有的gzip实现并将每个(例如)1兆字节的压缩数据序列化其解压缩器状态.然后进行随机访问,反序列化解压缩器状态并从兆字节边界读取.这似乎很难,特别是因为我正在使用Java而我找不到纯java gzip实现:(
  • 以1Mb的块重新压缩文件并执行与上面相同的操作.这具有使所需磁盘空间加倍的缺点.
  • 编写一个gzip格式的简单解析器,它不进行任何解压缩,只检测和索引块边界(如果有任何块:我还没有读取gzip格式描述)

language-agnostic compression gzip random-access large-files

12
推荐指数
1
解决办法
3317
查看次数

random.choice()在同一秒返回相同的值,如何避免它?

我一直在寻找有关如何在python中生成随机数的类似问题.示例:类似问题 - 但我没有问题,随机函数每次都返回相同的值.

我的随机生成器工作正常,问题是它在调用函数时返回相同的值,我认为,同样的第二个是不可取的.

我的代码看起来像这样

def getRandomID():
    token = ''
    letters = "abcdefghiklmnopqrstuvwwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
    for i in range(1,36):
        token = token + random.choice(letters)
    return token
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,当在不同时间调用时,此函数返回不同的值,但在同时调用函数时返回相同的值.我该如何避免这个问题?

我在后端服务器中使用此函数为前端用户生成唯一ID以插入数据库,因此在发生这种情况时我无法控制时间间隔.我必须有随机令牌来映射数据库中的用户,以便能够在数据库中使用queuenumbers正确插入它们.

python random random-access

11
推荐指数
2
解决办法
5257
查看次数

关闭RandomAccessFile有时需要45秒

在我的程序中,关闭java.util.RandomAccessFile有时需要45秒(好吧,几乎完全是:在44.998和45.003秒之间).该程序创建和关闭许多小文件.通常关闭文件非常快(在0到0.1秒之间).如果我调试程序,它将停留在本机方法RandomAccessFile.close0中.

使用FileOutputStream而不是RandomAccessFile时也会出现同样的问题(在这种情况下,程序在本机方法FileOutputStream.close0中被阻止).

有人知道那会是什么吗?你能在你的系统上重现这个问题(我只能在Mac上重现它,而不能在Windows XP上重现;我还没有在Linux上测试过)?


更新2:

这似乎只发生在Mac OS X上.我使用的是JDK 1.6.0_22-b04.它发生在32位和64位上.在Windows XP上似乎没有发生.

我的测试用例是:

import java.io.File;
import java.io.RandomAccessFile;
public class TestFileClose {
    public static void main(String... args) throws Exception {
        for (int i = 0; i < 100000; i++) {
            String name = "test" + i;
            RandomAccessFile r = new RandomAccessFile(name, "rw");
            r.write(0);
            long t = System.currentTimeMillis();
            r.close();
            long close = System.currentTimeMillis() - t;
            if (close > 200) {
                System.out.println("closing " + name +
                        " took " + close + " ms!");
            } …
Run Code Online (Sandbox Code Playgroud)

java jdk1.6 random-access osx-snow-leopard

10
推荐指数
1
解决办法
2806
查看次数

寻求AES-CTR加密输入

由于点亮率模式下的AES非常适合随机访问,因此我假设我使用CipherOutputStreamAES-CTR模式创建了数据源.下面的库 - 不是我的 - 使用RandomAccessFile允许在文件中寻找特定字节偏移的库.

我最初的想法是使用CipherInputStream带有Cipher正确参数的初始化,但是用于此的API不会寻求并声明不支持markreset.

我是否错过了可以为我做的这一部分API,我应该查看CTR的IV /块计数器的配置并使用自定义输入流(听起来像是针对self我的霰弹枪)重新创建它采取我错过的其他方法?

java encryption aes random-access

10
推荐指数
1
解决办法
2000
查看次数

在C中有效地从文本文件中有效地选择随机行?

这本质上是这个问题的一个受限制的版本.

假设我们有一个非常大的文本文件,包含大量的行.

我们需要从文件中随机选择一条线,具有统一的概率,但是存在约束条件:

  • 因为这是一个软实时应用程序,所以我们无法迭代整个文件.选择应该花费不变的时间.
  • 由于内存限制,无法缓存文件.
  • 由于允许在运行时更改文件,因此不能将文件的长度假定为常量.

我的第一个想法是使用lstat()调用以字节为单位获取总文件大小.fseek()然后可以用来直接访问随机字节偏移量,将类似O(1)的内容访问到文件的随机部分.

问题是我们不能再做一些事情,比如读到下一个换行符并将其称为一天,因为这会产生偏向长线的分布.

我解决这个问题的第一个想法是读取直到第一个"n"换行符(如果需要,回到文件的开头),然后从这个较小的集合中选择一个具有统一概率的行.可以安全地假设文件的内容是随机排序的,因此这个子样本在长度上应该是统一的,并且,由于它的起始点是从所有可能的点统一选择的,所以它应该代表从文件中统一选择的整个.所以,在伪C中,我们的算法看起来像:

 lstat(filepath, &filestat);
 fseek(file, (int)(filestat.off_t*drand48()), SEEK_SET);
 char sample[n][BUFSIZ];
 for(int i=0;i<n;i++)
     fgets(sample[i], BUFSIZ, file); //plus some stuff to deal with file wrap around...
 return sample[(int)(n*drand48())];
Run Code Online (Sandbox Code Playgroud)

这似乎不是一个特别优雅的解决方案,我并不完全相信它会是统一的,所以我想知道是否有更好的方法来做到这一点.有什么想法吗?

编辑:进一步考虑,我现在很确定我的方法不统一,因为起点更可能在更长的单词内,因此不统一.整蛊!

c random random-access

9
推荐指数
1
解决办法
1381
查看次数