小编Flo*_*est的帖子

std::binomial_distribution 在某些输入下永远挂起

std::binomial_distribution我在编译clang++(使用标准库)时遇到了一些奇怪的行为libstdc++

考虑以下简单的程序:

#include <ctime>
#include <random>
#include <iostream>

unsigned binom(unsigned n, double p) {
  std::mt19937 e(time(NULL));
  std::binomial_distribution<unsigned> b(n, p);
  return b(e);
}

int main() {

  std::cout << "sample1=" << binom(1073741823, 0.51174692866744709) << "\n";
  std::cout << "sample2=" << binom(1073741824, 0.51174692866744709) << "\n";

}
Run Code Online (Sandbox Code Playgroud)

该程序将输出一行 ( sample1=511766586\n),然后无限期挂起。

我是否以某种方式调用了未定义的行为?无论 PRNG 返回什么,这似乎都会发生。无论我如何播种,我main都会坚持第二行。

c++ random

7
推荐指数
1
解决办法
189
查看次数

R中的自引用嵌套函数?

所以,我正在尝试编写一个函数来递归地构建一个大型复杂的公式。基本上,我希望简单地工作如下:

f <- function(x) {
  g <- function(y) y
  for( i in 1:4 ) {
    h <- g
    g <- function(y) h(y)^2
  }
  g(x)
}
Run Code Online (Sandbox Code Playgroud)

请不要嘲笑这种疯狂的动机。现在我想得到的是一个返回 ((((x^2)^2)^2)^2) 的函数,但实际发生的是我的运行时立即崩溃,可能是因为有某种调用到一个未引用的函数或其他东西,因为我g每次都覆盖表达式(显然我真的不知道 r 在这种情况下是如何工作的)。

我如何才能实现保留旧g参考资料中的信息的想法?

r

4
推荐指数
1
解决办法
61
查看次数

学习Haskell并在一些示例代码中发现错误

当我学习一门新语言时,我要做的第一件事就是阅读快速傅里叶变换实现并尝试使其工作.这是一个我非常熟悉的算法 - 所以它帮助我理解语言是如何工作的.

目前,我正在阅读Roman Cheplyaka的这一实施.我现在非常密切地遵循算法,一切似乎都按预期工作,但是下面的一段代码为我抛出了一堆错误:(具体来说,该squareMap部分会抛出错误)

evalFourier coeffs pts = do
  let
    squares = nub $ u_sqr <$> pts -- values of x^2
    (even_coeffs, odd_coeffs) = split coeffs
  even_values <- evalFourier even_coeffs squares
  odd_values <- evalFourier odd_coeffs squares

  let
    -- a mapping from x^2 to (A_e(x^2), A_o(x^2))
    square_map =
      Map.fromList
      . zip squares
      $ zip even_values odd_values

    -- evaluate the polynomial at a single point
    eval1 :: U -> Writer (Sum Int) (Complex a)
    eval1 x = …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming haskell-stack

2
推荐指数
1
解决办法
149
查看次数

标签 统计

c++ ×1

functional-programming ×1

haskell ×1

haskell-stack ×1

r ×1

random ×1