Functional programming 在Mathematica中尝试生成随机数数组时出现问题

Functional programming 在Mathematica中尝试生成随机数数组时出现问题,functional-programming,wolfram-mathematica,Functional Programming,Wolfram Mathematica,我试图以函数的方式在Mathematica中生成一个随机数数组。这是我目前的尝试: Array[Random[Real, {-10, 10}], 7] 问题是,这总是打印相同的号码,当然,这不是我要找的。我知道Mathematica计算Random[Real,{-10,10}]一次,然后总是使用相同的值。我如何避免这个问题,保持这种功能性风格 感谢数组的第一个参数是应用于每个数组索引的函数(在本例中为值1到7)。如果你评估 Array[Random[Real, {-10, 10}], 7]

我试图以函数的方式在Mathematica中生成一个随机数数组。这是我目前的尝试:

Array[Random[Real, {-10, 10}], 7]
问题是,这总是打印相同的号码,当然,这不是我要找的。我知道Mathematica计算
Random[Real,{-10,10}]
一次,然后总是使用相同的值。我如何避免这个问题,保持这种功能性风格


感谢数组
的第一个参数是应用于每个数组索引的函数(在本例中为值1到7)。如果你评估

Array[Random[Real, {-10, 10}], 7]
结果是这样的:

{3.91766[1], 3.91766[2], 3.91766[3], 3.91766[4], 3.91766[5], 
 3.91766[6], 3.91766[7]}
发生的情况是:

  • Random[Real,{-10,10}]
    的计算结果为
    3.91766
  • 此结果用作“函数”,并应用于每个数组索引
  • 因此,我们看到了一系列表达式,如
    3.91766[1]
    ,这是一个奇数表达式,其中实数像函数一样应用于整数

    如果目的是生成7个不同随机数的列表,可以使用:

    Array[Random[Real, {-10, 10}] &, 7]
    
    此表达式与原始表达式之间的唯一区别是存在“&”。这使得第一个参数成为函数。该函数应用于每个数组索引(但忽略它),然后每次返回一个新的随机数

    获取此结果的另一种方法是使用

    Table[Random[Real, {-10, 10}], {7}]
    
    在Mathematica的当前版本中,
    Random
    函数已过时,并已被
    RandomInteger
    RandomReal
    取代。在这种情况下,
    RandomReal
    非常有用:

    RandomReal[{-10, 10}, 7]
    
    。。。其中,第一个参数是可供选择的范围,第二个参数是所需值的数量。注意,也可以生成高维随机数组,例如

    RandomReal[{-10, 10}, {7, 7}]
    

    Array
    的第一个参数是应用于每个数组索引的函数(在本例中为值1到7)。如果你评估

    Array[Random[Real, {-10, 10}], 7]
    
    结果是这样的:

    {3.91766[1], 3.91766[2], 3.91766[3], 3.91766[4], 3.91766[5], 
     3.91766[6], 3.91766[7]}
    
    发生的情况是:

  • Random[Real,{-10,10}]
    的计算结果为
    3.91766
  • 此结果用作“函数”,并应用于每个数组索引
  • 因此,我们看到了一系列表达式,如
    3.91766[1]
    ,这是一个奇数表达式,其中实数像函数一样应用于整数

    如果目的是生成7个不同随机数的列表,可以使用:

    Array[Random[Real, {-10, 10}] &, 7]
    
    此表达式与原始表达式之间的唯一区别是存在“&”。这使得第一个参数成为函数。该函数应用于每个数组索引(但忽略它),然后每次返回一个新的随机数

    获取此结果的另一种方法是使用

    Table[Random[Real, {-10, 10}], {7}]
    
    在Mathematica的当前版本中,
    Random
    函数已过时,并已被
    RandomInteger
    RandomReal
    取代。在这种情况下,
    RandomReal
    非常有用:

    RandomReal[{-10, 10}, 7]
    
    。。。其中,第一个参数是可供选择的范围,第二个参数是所需值的数量。注意,也可以生成高维随机数组,例如

    RandomReal[{-10, 10}, {7, 7}]
    

    您可以使用
    Array[Random[Real,{-10,10}]&,7]
    。注意符号,它基本上把第一个参数变成了一个没有参数的函数


    但是花环的方法要高得多…

    你可以使用
    数组[Random[Real,{-10,10}]&,7]
    。注意符号,它基本上把第一个参数变成了一个没有参数的函数


    但是花环的方法要高得多…

    我注意到我在这方面不是100%的丰富。。。但我有一些链接似乎有帮助。以下内容似乎对我有用。数字是(1.)最小值(2.)最大值和(3.)要生成的数字

    RandomInteger[{1,5},10]
    

    从这里开始:。希望有帮助

    我注意到我在这方面不是100%的富有。。。但我有一些链接似乎有帮助。以下内容似乎对我有用。数字是(1.)最小值(2.)最大值和(3.)要生成的数字

    RandomInteger[{1,5},10]
    

    从这里开始:。希望有帮助

    第二部漫画:。很抱歉只是必须.+1才能完美地应对形势…第二部漫画:。很抱歉为了完美地满足这种情况,必须+1。花环的答案有相同的逐字代码:
    Array[Random[Real,{-10,10}]&,7]
    @Mr.Wizard尽管看起来很像,但这只是另一种同时给出答案的情况。我最初的回答没有包含这个表达,尽管我在点击“保存”后立即想到了它。我立即添加了它,在编辑未记录的时间窗口内,当我保存更新后的回复时,Brett已经贡献了他的花环,然后我又做了一个无用的评论。我将尽量减少这些。花环的答案与代码一字不差:
    Array[Random[Real,{-10,10}]&,7]
    @Mr.Wizard尽管表面上看起来如此,但这只是另一种同时给出答案的情况。我最初的回答没有包含这个表达,尽管我在点击“保存”后立即想到了它。我立即添加了它,在编辑未记录的时间窗口内,当我保存更新后的回复时,Brett已经贡献了他的花环,然后我又做了一个无用的评论。我将尽量减少这些。