RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 626639
Accepted
mend4x
mend4x
Asked:2020-02-12 02:41:55 +0000 UTC2020-02-12 02:41:55 +0000 UTC 2020-02-12 02:41:55 +0000 UTC

fortran中的随机数

  • 772

再会。我是一名学生,我们学习 Fortran。这就是作业的样子:“为两个用户编写一个程序,其中用户 1 提供一个整数值。然后用户 2 必须猜测该值。让你的程序输出“更高”或“更低”,直到用户猜对为止。 “ - “为两个用户编写一个程序,用户 1 设置一个整数值。然后用户 2 必须猜测这个值。” 当第一个玩家给出的数字从上面可见时,看起来会很可笑。所以我想让程序给出一个任意数字。

случайные-числа
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    jfs
    2020-05-02T23:59:54Z2020-05-02T23:59:54Z

    要在 Fortran 中获取随机数,您可以调用random_number():

    real :: u
    call random_number(u)
    

    在这种情况下u,它是区间中的随机数[0, 1)。要获得范围内的整数[0, n),您可以调用floor(u * n).

    这是一个理想的世界。但几乎random_number所有时间它都会在我的机器上返回相同的序列,即使调用call random_seed它来初始化伪随机数生成器 (PRNG) 的种子也是如此。

    要解决这个问题,您可以手动从/dev/urandom文件中获取熵,或者,如果不可用,则使用当前时间作为种子:

    subroutine init_random_seed
      implicit none
      integer, allocatable :: seed(:)
      integer :: n, count, i, un, istat
    
      call random_seed(size=n) ! found out the necessary seed size
      ! use system clock as a fallback for the seed
      call system_clock(count)
      allocate(seed(n), source = count + 37 * [(i, i = 0,n-1)])
    
      ! use /dev/urandom if available
      open(newunit=un, file='/dev/urandom', access='stream', &
           status='old', action='read', form='unformatted', iostat=istat)
      if (istat == 0) then
         read(un) seed
         close(un)
      end if
      call random_seed(put=seed) ! set seed
      deallocate(seed)
    end subroutine init_random_seed
    

    此外,real它的有效数字位数有限(单精度数字为 24位),因此可能需要random_number()多次调用它以避免倾斜,类似于_randbelow(n)Python 的random().

    • 1

相关问题

  • Stream 中的随机数生成 (Java 8)

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5