Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Problem with Math.random()
Forum Updated to NodeBB v4.3 + New Features

Problem with Math.random()

Scheduled Pinned Locked Moved Solved QML and Qt Quick
21 Posts 5 Posters 3.5k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    MostafaGamal
    wrote on last edited by
    #9

    That's true.
    i agree with you.

    but for some reasons .. i can't move on the C++ side for now.

    but as u said, it is a JS command, so ... is there a missing dependency or OS package that needs to be installed 1st to let JS works well in QT ?

    maybe there is some QT versions that has a problems with JS ? if so .. which recommended version of QT shall i install alongside QT Creator version ?

    J.HilkJ 1 Reply Last reply
    0
    • M MostafaGamal

      would do it, but need a logical reason for not being work correctly for just upgrading my OS !
      as it was working well before.

      besides, i think it is not a good practice to only write this function and call it from C++ and continue my logic in QML, right ?

      JKSHJ Offline
      JKSHJ Offline
      JKSH
      Moderators
      wrote on last edited by JKSH
      #10

      @MostafaGamal said in Problem with Math.random():

      need a logical reason for not being work correctly for just upgrading my OS !

      There are many possibilities.

      Do you have an AMD Ryzen CPU? Some models and BIOS versions have faulty random number generators (RNGs): https://forum.manjaro.org/t/i-get-a-cpu-random-generator-warning-advising-me-to-disable-hardware-random-number-generation/116796

      • Try updating your BIOS
      • Run some tests using rng-tools: https://wiki.archlinux.org/index.php/Rng-tools (the article is for Arch Linux but the same tools exist in Ubuntu repos)

      Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

      M 1 Reply Last reply
      3
      • M MostafaGamal

        That's true.
        i agree with you.

        but for some reasons .. i can't move on the C++ side for now.

        but as u said, it is a JS command, so ... is there a missing dependency or OS package that needs to be installed 1st to let JS works well in QT ?

        maybe there is some QT versions that has a problems with JS ? if so .. which recommended version of QT shall i install alongside QT Creator version ?

        J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by
        #11

        @MostafaGamal said in Problem with Math.random():

        but for some reasons .. i can't move on the C++ side for now.

        you should really consider it, because you're reinventing the wheel ;)

        Qt has a nice and easy to use QUuid class
        simply wrap it in a basic class and expose it to QML and import it where you need it.


        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


        Q: What's that?
        A: It's blue light.
        Q: What does it do?
        A: It turns blue.

        M 1 Reply Last reply
        1
        • JKSHJ JKSH

          @MostafaGamal said in Problem with Math.random():

          need a logical reason for not being work correctly for just upgrading my OS !

          There are many possibilities.

          Do you have an AMD Ryzen CPU? Some models and BIOS versions have faulty random number generators (RNGs): https://forum.manjaro.org/t/i-get-a-cpu-random-generator-warning-advising-me-to-disable-hardware-random-number-generation/116796

          • Try updating your BIOS
          • Run some tests using rng-tools: https://wiki.archlinux.org/index.php/Rng-tools (the article is for Arch Linux but the same tools exist in Ubuntu repos)
          M Offline
          M Offline
          MostafaGamal
          wrote on last edited by
          #12

          @JKSH
          Yes, i have the same processor as in the forum post : AMD Ryzen 7 3700X 8-Core @ 16x 3.6GHz
          if updating BIOS is the solution ... which BIOS version shall i install ? (My MotherBoard is : Gigabyte B450 Aorus Pro Wifi)

          also installed rng-tools for testing.
          that was the output of command

          rngtest -c 1000 </dev/random
          

          rngtest 5
          Copyright (c) 2004 by Henrique de Moraes Holschuh
          This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

          rngtest: starting FIPS tests...
          rngtest: bits received from input: 20000032
          rngtest: FIPS 140-2 successes: 999
          rngtest: FIPS 140-2 failures: 1
          rngtest: FIPS 140-2(2001-10-10) Monobit: 0
          rngtest: FIPS 140-2(2001-10-10) Poker: 0
          rngtest: FIPS 140-2(2001-10-10) Runs: 1
          rngtest: FIPS 140-2(2001-10-10) Long run: 0
          rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
          rngtest: input channel speed: (min=263.549; avg=252860.427; max=6493506.494)bits/s
          rngtest: FIPS tests speed: (min=45.960; avg=84.689; max=87.094)Mibits/s
          rngtest: Program run time: 79320378 microseconds

          also tried this command : sudo rngd -f

          and the output was:
          too many FIPS failures, disabling entropy source

          too many FIPS failures, disabling entropy source

          No entropy sources working, exiting rngd

          so .. do i have a CPU Problem ? and how do Math.random() work ? does it depend on hardware rnd ? or a kernel /dev/random ?

          JKSHJ 1 Reply Last reply
          0
          • M MostafaGamal

            @JKSH
            Yes, i have the same processor as in the forum post : AMD Ryzen 7 3700X 8-Core @ 16x 3.6GHz
            if updating BIOS is the solution ... which BIOS version shall i install ? (My MotherBoard is : Gigabyte B450 Aorus Pro Wifi)

            also installed rng-tools for testing.
            that was the output of command

            rngtest -c 1000 </dev/random
            

            rngtest 5
            Copyright (c) 2004 by Henrique de Moraes Holschuh
            This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

            rngtest: starting FIPS tests...
            rngtest: bits received from input: 20000032
            rngtest: FIPS 140-2 successes: 999
            rngtest: FIPS 140-2 failures: 1
            rngtest: FIPS 140-2(2001-10-10) Monobit: 0
            rngtest: FIPS 140-2(2001-10-10) Poker: 0
            rngtest: FIPS 140-2(2001-10-10) Runs: 1
            rngtest: FIPS 140-2(2001-10-10) Long run: 0
            rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
            rngtest: input channel speed: (min=263.549; avg=252860.427; max=6493506.494)bits/s
            rngtest: FIPS tests speed: (min=45.960; avg=84.689; max=87.094)Mibits/s
            rngtest: Program run time: 79320378 microseconds

            also tried this command : sudo rngd -f

            and the output was:
            too many FIPS failures, disabling entropy source

            too many FIPS failures, disabling entropy source

            No entropy sources working, exiting rngd

            so .. do i have a CPU Problem ? and how do Math.random() work ? does it depend on hardware rnd ? or a kernel /dev/random ?

            JKSHJ Offline
            JKSHJ Offline
            JKSH
            Moderators
            wrote on last edited by
            #13

            @MostafaGamal said in Problem with Math.random():

            Yes, i have the same processor as in the forum post : AMD Ryzen 7 3700X 8-Core @ 16x 3.6GHz
            if updating BIOS is the solution ... which BIOS version shall i install ? (My MotherBoard is : Gigabyte B450 Aorus Pro Wifi)

            Get the latest version from your motherboard's support website.

            so .. do i have a CPU Problem ?

            Probably, since it's not providing entropy.

            and how do Math.random() work ? does it depend on hardware rnd ? or a kernel /dev/random ?

            I don't know the internal details, but good modern RNGs should always depend on hardware.

            Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

            M 1 Reply Last reply
            2
            • J.HilkJ J.Hilk

              @MostafaGamal said in Problem with Math.random():

              but for some reasons .. i can't move on the C++ side for now.

              you should really consider it, because you're reinventing the wheel ;)

              Qt has a nice and easy to use QUuid class
              simply wrap it in a basic class and expose it to QML and import it where you need it.

              M Offline
              M Offline
              MostafaGamal
              wrote on last edited by
              #14

              @J-Hilk
              sure.

              taking this into consideration.

              Thanks a lot :))

              1 Reply Last reply
              0
              • JKSHJ JKSH

                @MostafaGamal said in Problem with Math.random():

                Yes, i have the same processor as in the forum post : AMD Ryzen 7 3700X 8-Core @ 16x 3.6GHz
                if updating BIOS is the solution ... which BIOS version shall i install ? (My MotherBoard is : Gigabyte B450 Aorus Pro Wifi)

                Get the latest version from your motherboard's support website.

                so .. do i have a CPU Problem ?

                Probably, since it's not providing entropy.

                and how do Math.random() work ? does it depend on hardware rnd ? or a kernel /dev/random ?

                I don't know the internal details, but good modern RNGs should always depend on hardware.

                M Offline
                M Offline
                MostafaGamal
                wrote on last edited by
                #15

                @JKSH

                i've tried to run

                quint32 rnd = QRandomGenerator::global()->generate();
                

                in a seperate new project for testing too and found the following:
                rnd value is always constant : 1988610280

                i think It leaves no doubt that it is CPU issue .. right ?

                fcarneyF 1 Reply Last reply
                0
                • M MostafaGamal

                  @JKSH

                  i've tried to run

                  quint32 rnd = QRandomGenerator::global()->generate();
                  

                  in a seperate new project for testing too and found the following:
                  rnd value is always constant : 1988610280

                  i think It leaves no doubt that it is CPU issue .. right ?

                  fcarneyF Offline
                  fcarneyF Offline
                  fcarney
                  wrote on last edited by
                  #16

                  @MostafaGamal said in Problem with Math.random():

                  quint32 rnd = QRandomGenerator::global()->generate();

                  Did you run it more than once during the same run? Did you specify a seed value? What seed value?

                  C++ is a perfectly valid school of magic.

                  M 1 Reply Last reply
                  0
                  • fcarneyF fcarney

                    @MostafaGamal said in Problem with Math.random():

                    quint32 rnd = QRandomGenerator::global()->generate();

                    Did you run it more than once during the same run? Did you specify a seed value? What seed value?

                    M Offline
                    M Offline
                    MostafaGamal
                    wrote on last edited by
                    #17

                    @fcarney
                    no i didn't provide a seed value.

                    but i ran it more than once, Yes about 9 times
                    and the same value every time.

                    btw .. when tracing my UUID Function a new number is generated every 58 tick.

                    for ex: if i did a for loop 58 times, a new value is generated.

                    fcarneyF 1 Reply Last reply
                    0
                    • M MostafaGamal

                      @fcarney
                      no i didn't provide a seed value.

                      but i ran it more than once, Yes about 9 times
                      and the same value every time.

                      btw .. when tracing my UUID Function a new number is generated every 58 tick.

                      for ex: if i did a for loop 58 times, a new value is generated.

                      fcarneyF Offline
                      fcarneyF Offline
                      fcarney
                      wrote on last edited by fcarney
                      #18

                      @MostafaGamal said in Problem with Math.random():

                      but i ran it more than once, Yes about 9 times

                      That is not what I asked:

                      for(int count=0; count<10; ++count){
                          quint32 rnd = QRandomGenerator::global()->generate();
                          qInfo() << rnd;
                      }
                      

                      Does this produce the same output for all 10 values?

                      Edit:
                      I get completely different values on every run. So yeah, there is something wrong. I am also not providing a seed.

                      C++ is a perfectly valid school of magic.

                      M 1 Reply Last reply
                      1
                      • fcarneyF fcarney

                        @MostafaGamal said in Problem with Math.random():

                        but i ran it more than once, Yes about 9 times

                        That is not what I asked:

                        for(int count=0; count<10; ++count){
                            quint32 rnd = QRandomGenerator::global()->generate();
                            qInfo() << rnd;
                        }
                        

                        Does this produce the same output for all 10 values?

                        Edit:
                        I get completely different values on every run. So yeah, there is something wrong. I am also not providing a seed.

                        M Offline
                        M Offline
                        MostafaGamal
                        wrote on last edited by
                        #19

                        @fcarney

                        Yes,
                        The same output every run without a seed.

                        so, yeah something is not correct here. i'll update my BIOS then re-check it again

                        fcarneyF 1 Reply Last reply
                        0
                        • M MostafaGamal

                          @fcarney

                          Yes,
                          The same output every run without a seed.

                          so, yeah something is not correct here. i'll update my BIOS then re-check it again

                          fcarneyF Offline
                          fcarneyF Offline
                          fcarney
                          wrote on last edited by
                          #20

                          @MostafaGamal You have found a really interesting and annoying problem. Please keep us posted as to the outcome.

                          C++ is a perfectly valid school of magic.

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            MostafaGamal
                            wrote on last edited by
                            #21

                            The problem is fixed after updating my BIOS Successfully which updated AGESA to version 1.0.0.3 ABBA

                            @fcarney Yes, it is very annoying one!

                            Thanks Everyone for helping me :))

                            Special Thanks to @JKSH as he mentioned that the problem is a hardware issue not software one.

                            1 Reply Last reply
                            4

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved