小编Dan*_*Dan的帖子

Random.nextBoolean()始终返回True无关紧要种子

当我运行以下代码时,无论我在for循环中使用什么范围,代码总是打印出true十次.

public static void main(String[] args) 
{
    Random bool = new Random();

    for (int i = 0; i < 10; i++) {
        bool.setSeed(i);
        System.out.println(bool.nextBoolean());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我对代码稍作修改并让随机生成器nextBoolean()在打印之前运行一次函数,那么当我更改for循环的范围时,我得到正常的分布truefalse输出中的chages:

public static void main(String[] args) 
{
    Random bool = new Random();

    for (int i = 0; i < 10; i++) {
        bool.setSeed(i);
        bool.nextBoolean(); //Only change
        System.out.println(bool.nextBoolean());
    }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,该nextBoolean()函数总是true在第一次执行时返回,这种行为是否有任何原因?

java random loops boolean

6
推荐指数
1
解决办法
1759
查看次数

Monads - 扁平化的目的

flatMap所以我一直在阅读一些关于 scala 中的 Monad 的文章,以及与其函数和理解相关的所有语法for。直观上,我理解为什么 Monad 需要使用函数map的一部分flatMap,就像通常当我map在零个、一个或多个元素的容器上使用函数时,它返回相同的容器,但传入的函数应用于所有元素容器。类似地,Monad 是零个、一个或多个元素的容器。

flatten然而,这部分的目的是什么flatMap?我无法理解其背后的直觉。对我来说,这似乎是额外的样板,需要传递所有函数来围绕其返回值创建一个容器/flatMap单子,只是让该容器立即被. 我想不出使用 的单个示例不能通过简单地替换为 来简化。例如:flattenflatMapflatMapmap

var monad = Option(5)
var monad2 = None

def flatAdder(i:Int) = Option(i + 1)
def adder(i:Int) = i + 1

// What I see in all the examples
monad.flatMap(flatAdder)
// Option[Int] = Some(6)
monad.flatMap(flatAdder).flatMap(flatAdder)
// Option[Int] = Some(7)
monad2.flatMap(flatAdder)
// Option[Int] = None
monad2.flatMap(flatAdder).flatMap(flatAdder)
// Option[Int] = None

// Isn't …
Run Code Online (Sandbox Code Playgroud)

monads scala flatmap

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

在带有通配符的匿名函数中使用方括号

我目前正在学习 Scala 并且正在使用带有_通配符的匿名函数。这对我来说是有道理的:

// Creates function operation(a, b, c) => a + (b / c)
var operation = (_:Double) + (_:Double) / (_:Double)
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何operation改为 return (a + b) / c。这些都不起作用:

// Attempting to create function operation(a, b, c) => (a + b) / c
var operation = ((_:Double) + (_:Double)) / (_:Double)
// error: value / is not a member of (Double, Double) => Double
var operation = ((_:Double) + (_:Double)).toDouble / (_:Double)
// error: …
Run Code Online (Sandbox Code Playgroud)

scala anonymous-function

0
推荐指数
1
解决办法
43
查看次数

标签 统计

scala ×2

anonymous-function ×1

boolean ×1

flatmap ×1

java ×1

loops ×1

monads ×1

random ×1