相关疑难解决方法(0)

随机从文件中选择行而不用Unix扼杀它

我有一个10 ^ 7行文件,其中我想从文件中随机选择1/100行.这是我所拥有的AWK代码,但它会预先包含所有文件内容.我的PC内存无法处理这样的问题.还有其他办法吗?

awk 'BEGIN{srand()}
!/^$/{ a[c++]=$0}
END {  
  for ( i=1;i<=c ;i++ )  { 
    num=int(rand() * c)
    if ( a[num] ) {
        print a[num]
        delete a[num]
        d++
    }
    if ( d == c/100 ) break
  }
 }' file
Run Code Online (Sandbox Code Playgroud)

unix linux awk random-sample file-processing

51
推荐指数
7
解决办法
4万
查看次数

从未知长度的序列中随机选择N个项目

我正在尝试编写一种算法,该算法可以随机地从序列中选择N个不同的项目,而不需要事先知道序列的大小,并且在不止一次迭代序列的情况下进行迭代是很昂贵的.例如,序列的元素可能是一个巨大文件的行.

我在N = 1时找到了一个解决方案(也就是说,当试图从一个巨大的序列中随机选择一个元素时):

import random
items = range(1, 10) # Imagine this is a huge sequence of unknown length
count = 1
selected = None
for item in items:
    if random.random() * count < 1:
        selected = item
    count += 1
Run Code Online (Sandbox Code Playgroud)

但是如何才能为其他N值(比如N = 3)实现同样的目的呢?

python random algorithm

44
推荐指数
4
解决办法
7万
查看次数

如何生成满足某些条件的三个随机整数?

我是编程的初学者,我正在寻找如何生成满足条件的三个整数的好主意。

例子:

给定n = 30,我们被要求生成三个整数 a、b 和 c,因此7*a + 5*b + 3*c = n。我尝试使用for循环,但它花费了太多时间,而且我的最大测试时间为 1000 毫秒。

我正在使用 Python 3。

我的尝试:

x = int(input())
c = []
k = []
w = []
for i in range(x):
    for j in range(x):
        for h in range(x):
           if 7*i + 5*j + 3*h = x:
              c.append(i)
              k.append(j)
              w.append(h)
if len(c) == len(k) == len(w) 
    print(-1)
else: 
    print(str(k[0]) + ' ' + str(c[0]) + ' ' + str(w[0]))
Run Code Online (Sandbox Code Playgroud)

python random python-3.x

39
推荐指数
4
解决办法
7427
查看次数

从链表中有效地选择一组随机元素

说我有一个长度数字的链表N.N非常大,我事先并不知道确切的价值N.

如何最有效地编写一个从列表中返回k完全随机数的函数?

language-agnostic algorithm list

37
推荐指数
2
解决办法
3万
查看次数

Monadic折叠与状态monad在恒定的空间(堆和堆栈)?

是否可以在常量堆栈和堆空间中在State monad中执行折叠?或者是一种不同的功能技术更适合我的问题?

接下来的部分将描述问题和激励用例.我正在使用Scala,但Haskell中的解决方案也受到欢迎.


折叠在StateMonad填充堆

假设Scalaz 7.考虑一下州Monad的monadic折叠.为了避免堆栈溢出,我们将蹦蹦跳跳.

import scalaz._
import Scalaz._
import scalaz.std.iterable._
import Free.Trampoline

type TrampolinedState[S, B] = StateT[Trampoline, S, B] // monad type constructor

type S = Int  // state is an integer
type M[B] = TrampolinedState[S, B] // our trampolined state monad

type R = Int  // or some other monoid

val col: Iterable[R] = largeIterableofRs() // defined elsewhere

val (count, sum): (S, R) = col.foldLeftM[M, R](Monoid[R].zero){ 
    (acc: R, x: R) => StateT[Trampoline, S, R] { …
Run Code Online (Sandbox Code Playgroud)

monads functional-programming scala scalaz scalaz7

11
推荐指数
1
解决办法
1845
查看次数

设计存储算法

这是一个面试饼干的问题 -

鉴于您正在以恒定速率从仪器接收样本,并且您有恒定的存储空间,您将如何设计一种存储算法,使我能够获得有代表性的数据读取,无论何时查看它?换句话说,代表了迄今为止系统的行为.

我无法理解它.所以,我正在寻找想法.

algorithm optimization

5
推荐指数
1
解决办法
2114
查看次数