And in case you want reproducible doctests with values that look random you can always do something as `set_random_seed(0)`.
Am Montag, 22. Juni 2020 13:35:16 UTC+2 schrieb Jonathan Kliem: > > Yes there is need. Please go into any file of your choice and print out a > "random" value in a doctest and see what happens. > There is not even a variation as Michael pointed out. > > If you start sage in a shell, there is variation. But sage in a shell > behaves different than in doctests. E.g. in doctests the dictionaries are > being sorted, in the shell not. > And currently in doctests there is no variation at all in random numbers. > You will always get the very same numbers. > > Am Montag, 22. Juni 2020 13:26:24 UTC+2 schrieb Dima Pasechnik: >> >> >> >> On Mon, 22 Jun 2020, 12:18 'Jonathan Kliem' via sage-devel, < >> sage-...@googlegroups.com> wrote: >> >>> Currently, the doctest setup produces the very same random numbers on >>> every instance. >>> >>> If you call `set_random_seed()` first you will get somewhat different >>> values on every single doctest run. It can still be annoying as not every >>> bot will catch every failure, but it is by far more likely to catch >>> regression eventually. >>> >> >> there is no need to explicitly set the seed in these tests. Because it is >> done as Sage starts up. >> By explicitly setting it you just restart the RNG, for no good reason. >> There is no guarantee that this would give you "better" randomness. >> If you want more random data in your doctest, repeat tests in a loop. >> >> >>> It seems that there are a number of doctests that are supposed to run on >>> different values each time the doctest is run. However, currently exactly >>> one list of values is tested each time. >>> >>> It's not about getting very good pseudo randomness. It is just about >>> getting some variation of values. >>> >>> Am Montag, 22. Juni 2020 13:09:55 UTC+2 schrieb Dima Pasechnik: >>>> >>>> >>>> >>>> On Mon, 22 Jun 2020, 10:58 'Jonathan Kliem' via sage-devel, < >>>> sage-...@googlegroups.com> wrote: >>>> >>>>> I had a doctest >>>>> >>>>> sage: ls = [randint(-100,100) for _ in range(4)] >>>>> sage: intervals = [[x, x+randint(1,50)] for x in ls] >>>>> sage: P = polytopes.hypercube(4, intervals, backend= >>>>> 'field') >>>>> >>>>> which then checked `P` for consistency. However it was somewhat >>>>> meaningless (missing `set_random_seed()`) as all entries in `ls` where >>>>> positive. It never caught a sign error that we introduced in #28866 >>>>> <https://trac.sagemath.org/ticket/28866>. >>>>> Adding `set_random_seed` to it, does catch the error. >>>>> >>>> >>>> unless I misunderstand how Sage random numbers are set, by adding an >>>> explicit set_random_seed() call you merely went with another bunch of >>>> pseudorandom values than these ones you were hitting without it, not that >>>> you were fixing a bug. In other words you just hit a more favourable >>>> bunch >>>> of pseudorandom data. >>>> >>>> To make such tests more robust, one needs to call them in a loop, >>>> without resetting the seed. Then you get a bit more of (pseudo) randomness. >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>> Now this check for consistency certainly wasn't very good in the first >>>>> place, as two polyhedra might compare equal, even if one is set up >>>>> incorrectly (I just noticed this because of your post, thank you). But it >>>>> still would have caught the error even randomness was true randomness. >>>>> >>>>> You might say, I should have known to add `set_random_seed()` in the >>>>> first place, but I'm definitely not the only one who made that mistake >>>>> and >>>>> there are plenty of doctests that claim to test a random event, but they >>>>> really test the same event all over and over. >>>>> >>>>> Am Montag, 22. Juni 2020 11:24:59 UTC+2 schrieb Dima Pasechnik: >>>>>> >>>>>> >>>>>> >>>>>> On Mon, 22 Jun 2020, 10:01 'Jonathan Kliem' via sage-devel, < >>>>>> sage-...@googlegroups.com> wrote: >>>>>> >>>>>>> Hi. Could we maybe turn off reproducible "randomness" in doctests by >>>>>>> default. There are probably thousands of meaningless doctests because >>>>>>> of >>>>>>> this. >>>>>>> >>>>>>> E.g. https://trac.sagemath.org/ticket/29904 >>>>>>> >>>>>> >>>>>> I don't understand, you say there that it went unnoticed due to a too >>>>>> easy doctest. I don't see how that one had anything to do with >>>>>> randomness. >>>>>> >>>>>> Also, could you explain what you mean by "randomness" there. >>>>>> Doctests are either tagged "random" (and do matching of answers skipped), >>>>>> >>>>>> or use random inputs. If a doctest with random input produces >>>>>> inconsistent results due to not properly set seeds, it would have been >>>>>> caught all along. >>>>>> >>>>>> >>>>>> >>>>>>> or the doctests for the namespace function `bernoulli` or the >>>>>>> `number_of_partitions` function also in the namespace. >>>>>>> >>>>>>> Alternatively we should add `set_random_seed` to all of those places. >>>>>>> >>>>>>> Either way, this might be a huge project, because of possible bugs. >>>>>>> >>>>>>> Jonathan >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "sage-devel" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to sage-...@googlegroups.com. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/sage-devel/6a5005ec-717e-400c-b253-514f9101bc72o%40googlegroups.com >>>>>>> >>>>>>> <https://groups.google.com/d/msgid/sage-devel/6a5005ec-717e-400c-b253-514f9101bc72o%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "sage-devel" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to sage-...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/sage-devel/fcc3910a-e851-4f58-9a26-4eaf3dced699o%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/sage-devel/fcc3910a-e851-4f58-9a26-4eaf3dced699o%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "sage-devel" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to sage-...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sage-devel/f5004f9e-be47-47a2-9646-6e3eaf6ac1b6o%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/sage-devel/f5004f9e-be47-47a2-9646-6e3eaf6ac1b6o%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/a9efe00e-52f2-4250-9ed3-da531988bfe4o%40googlegroups.com.