這是一種奇怪的問題,並且可能不完全適用於堆棧溢出,但我無法在網上找到關於它的任何東西,所以這裏是......生成隨機數學函數
是否有(或什麼是最好的方式)來產生隨機數學函數?通過這個我並不是說我想要一個生成隨機數的函數(行RNG),而是我想動態地創建一些函數,它將一個或多個實際輸入從一個域映射到單個輸出,並使用一些mutate規則。
例如,在最簡單的情況下,我可以通過對x1和x2應用隨機運算符來生成f(x1,x2) -> Y
這樣的函數。如F可能是:
f = x1 + x2
or f = x1 - x2
or f = x1 * x2
etc...
不過,我想能夠包括更復雜的公式,包括三角函數,冪函數,僞隨機常量,可能還有一些微積分的功能,等等......顯然,我不能只是串聯不同的塊以完全隨機的方式,因爲這些函數總是需要總是有效的語法。
這不適用於任何與密碼相關的任何事情,所以它不一定是完美的,但熵越高越好。如果有一個簡單的方法來跟蹤正在執行什麼操作並使它們發生變化,這也會很棒。
我不知道是否有人對此有任何見解,或者如果它甚至是有道理的,但是謝謝你的好意
有太多的方法可以解決這個問題。答案只會變成一個人們喜歡的稻草民意調查。最好的事情是自己做一些關於這個話題的研究,找到兩三個,分析他們,確定他們是否爲你工作,然後試試他們。當你對你試圖做的事情有一個具體的問題時來找我們。 –
這不是一個非常精確的問題。 「生成函數」是什麼意思?你的意思是隻顯示文本的功能?或者生成執行該函數的代碼?你知道你想限制你的生產的操作嗎(例如,它是否包含超越函數,或者只有4個操作+, - ,*,/)?一種方法是編寫一個分析樹生成器,然後將該分析樹翻譯爲一個表達式。分析樹生成器將應用樹中每個節點的隨機性。 – lurker
構建這種類型的生成器時,您需要約束(特別是在深度上,或者生成可能永遠不會終止),否則您最終可能會遇到像下面這樣的術語(例如):gamma(sqrt(gamma(sqrt (sqrt(sin(x + sqrt((gamma(sqrt(x))))))))))))' –