diff options
| author | Juan Marín Noguera <juan@mnpi.eu> | 2025-05-16 22:18:44 +0200 |
|---|---|---|
| committer | Juan Marín Noguera <juan@mnpi.eu> | 2025-05-16 22:18:44 +0200 |
| commit | 4f670b750af5c11e1eac16d9cd8556455f89f46a (patch) | |
| tree | e0f8d7b33df2727d89150f799ee8628821fda80a /3.6.lyx | |
| parent | 16ccda6c459c0fd7ca2081e9d541124c28b0c556 (diff) | |
Changed layout for more manageable volumes
Diffstat (limited to '3.6.lyx')
| -rw-r--r-- | 3.6.lyx | 496 |
1 files changed, 0 insertions, 496 deletions
diff --git a/3.6.lyx b/3.6.lyx deleted file mode 100644 index 8eaaa14..0000000 --- a/3.6.lyx +++ /dev/null @@ -1,496 +0,0 @@ -#LyX 2.4 created this file. For more info see https://www.lyx.org/ -\lyxformat 620 -\begin_document -\begin_header -\save_transient_properties true -\origin unavailable -\textclass book -\begin_preamble -\input defs -\end_preamble -\use_default_options true -\maintain_unincluded_children no -\language english -\language_package default -\inputencoding utf8 -\fontencoding auto -\font_roman "default" "default" -\font_sans "default" "default" -\font_typewriter "default" "default" -\font_math "auto" "auto" -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_roman_osf false -\font_sans_osf false -\font_typewriter_osf false -\font_sf_scale 100 100 -\font_tt_scale 100 100 -\use_microtype false -\use_dash_ligatures true -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\float_placement class -\float_alignment class -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_package amsmath 1 -\use_package amssymb 1 -\use_package cancel 1 -\use_package esint 1 -\use_package mathdots 1 -\use_package mathtools 1 -\use_package mhchem 1 -\use_package stackrel 1 -\use_package stmaryrd 1 -\use_package undertilde 1 -\cite_engine basic -\cite_engine_type default -\biblio_style plain -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\justification true -\use_refstyle 1 -\use_formatted_ref 0 -\use_minted 0 -\use_lineno 0 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\is_math_indent 0 -\math_numbering_side default -\quotes_style english -\dynamic_quotes 0 -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tablestyle default -\tracking_changes false -\output_changes false -\change_bars false -\postpone_fragile_content false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\docbook_table_output 0 -\docbook_mathml_prefix 1 -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc2[15] -\end_layout - -\end_inset - -some people have been afraid that computers will someday take over the world; - but they are reassured by the statement that a machine cannot do anything really new, - since it is only obeying the commands of its master, - the programmer. - Lady Lovelace wrote in 1844, - -\begin_inset Quotes eld -\end_inset - -The Analytical Engine has no pretensions to -\emph on -originate -\emph default - anything. - It can do -\emph on -whatever we know how to order it -\emph default - to perform. -\begin_inset Quotes erd -\end_inset - - Her statement has been elaborated further by many philosophers. - Discuss this topic, - with random number generators in mind. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -While it is true that a machine cannot do anything that a programmer doesn't tell it to do, - there are a number of caveats here. - First is that the programmer, - or their boss, - may not have other people's best interests in mind. - Another one is that what the programmer tells the machine to do is not the same thing as what they -\emph on -expects -\emph default - them to do; - the software may have bugs, - although the bugs are unlikely to make the computer take over the world. - Finally, - if a random number generator is being used, - the programmer is telling the machine to do one of a number of actions, - chosen with some given distribution, - without telling it which one to choose. - These actions are typically limited to a given scope, - and the programmer still controls the family of actions that the machine may take. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc11[M25] -\end_layout - -\end_inset - -Assuming that floating point arithmetic on numbers of type -\family typewriter -double -\family default - is properly rounded in the sense of Section 4.2.2 (hence exact when the values are suitably restricted), - convert the C routines -\emph on -ran_array -\emph default - and -\emph on -ran_start -\emph default - to similar programs that deliver double-precision random fractions in the range -\begin_inset Formula $[0..1)$ -\end_inset - -, - instead of 30-bit integers. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -Technically this does the work: -\begin_inset listings -lstparams "language=C,numbers=left,basicstyle={\small\sffamily},breaklines=true" -inline false -status open - -\begin_layout Plain Layout - -#include <math.h> -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -static double ran_u[KK]; -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -void ranf_array(double out[], - size_t n) -\end_layout - -\begin_layout Plain Layout - -{ -\end_layout - -\begin_layout Plain Layout - - size_t i, - j; -\end_layout - -\begin_layout Plain Layout - - assert(n >= KK); -\end_layout - -\begin_layout Plain Layout - - for (j = 0; - j < KK; - j++) -\end_layout - -\begin_layout Plain Layout - - out[j] = ran_u[j]; -\end_layout - -\begin_layout Plain Layout - - for (; - j < n; - j++) -\end_layout - -\begin_layout Plain Layout - - out[j] = fmod(1. - + out[j-KK] - out[j-LL], - 1.); -\end_layout - -\begin_layout Plain Layout - - for (i = 0; - i < LL; - i++, - j++) -\end_layout - -\begin_layout Plain Layout - - ran_u[i] = fmod(1. - + out[j-KK] - out[j-LL], - 1.); -\end_layout - -\begin_layout Plain Layout - - for (; - i < KK; - i++, - j++) -\end_layout - -\begin_layout Plain Layout - - ran_u[i] = fmod(1. - + out[j-KK] - ran_x[j-LL], - 1.); -\end_layout - -\begin_layout Plain Layout - -} -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -void ranf_start(long seed) -\end_layout - -\begin_layout Plain Layout - -{ -\end_layout - -\begin_layout Plain Layout - - ranf_start(seed); -\end_layout - -\begin_layout Plain Layout - - for (size_t i = 0; - i < KK; - i++) -\end_layout - -\begin_layout Plain Layout - - ran_u[i] = (double)ran_x[i] / MM; -\end_layout - -\begin_layout Plain Layout - -} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc12[M21] -\end_layout - -\end_inset - -What random number generator would be suitable for a minicomputer that does arithmetic only on integers in the range -\begin_inset Formula $[-32768..32767]$ -\end_inset - -? -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -We could use one of the generators with very large moduli from exercise 3.2.1.1–14. - We could also use running generators like the one in the text -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc15[25] -\end_layout - -\end_inset - -Write C code that makes it convenient to generate the random integers obtained from -\emph on -ran_array -\emph default - by discarding all but the first 100 of every 1009 elements, - as recommended in the text. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "language=C,numbers=left,basicstyle={\normalsize\sffamily},breaklines=true" -inline false -status open - -\begin_layout Plain Layout - -long next() -\end_layout - -\begin_layout Plain Layout - -{ -\end_layout - -\begin_layout Plain Layout - - static long buf[1009], - next = 100; -\end_layout - -\begin_layout Plain Layout - - if (next == 100) { -\end_layout - -\begin_layout Plain Layout - - ran_array(buf, - sizeof(buf) / sizeof(buf[0])); -\end_layout - -\begin_layout Plain Layout - - next = 0; -\end_layout - -\begin_layout Plain Layout - - } -\end_layout - -\begin_layout Plain Layout - - return buf[next++]; -\end_layout - -\begin_layout Plain Layout - -} -\end_layout - -\end_inset - - -\end_layout - -\end_body -\end_document |
