2016-02-12 6 views
5

माइक्रोसॉफ्ट जेड 3 में, जब हम सूत्र को हल करने का प्रयास करते हैं, तो Z3 हमेशा दो या अधिक संतोषजनक समाधान होने पर परिणाम को उसी अनुक्रम में देता है।माइक्रोसॉफ्ट जेड 3 से यादृच्छिक परिणाम कैसे प्राप्त करें?

क्या Z3 से यादृच्छिक परिणाम प्राप्त करना संभव है ताकि एक ही इनपुट के लिए, यह विभिन्न निष्पादन में विभिन्न आउटपुट अनुक्रम उत्पन्न करेगा।

कृपया ध्यान दें कि, मैं सी या सी # एपीआई का उपयोग कर रहा हूँ। मैं smt2lib का उपयोग कर Z3 का उपयोग नहीं कर रहा हूँ। इसलिए यदि आप मुझे सी या सी # एपीआई फ़ंक्शन उदाहरण दे सकते हैं जो यादृच्छिकरण जोड़ सकता है, तो यह अधिक उपयोगी होगा।

+1

लग रहा है। – Carcigenicate

उत्तर

1
(set-option :smt.arith.random_initial_value true) 
(declare-const x Int) 
(declare-const y Int) 
(assert (> (+ x y) 0)) 
(check-sat-using (using-params qflra :random_seed 1)) 
(get-model) 
(check-sat-using (using-params qflra :random_seed 2)) 
(get-model) 
(check-sat-using (using-params qflra :random_seed 3)) 
(get-model) 

here से लिया गया। आप की तरह बीज निर्धारित करने की आवश्यकता

+0

यह कौन सी भाषा है? योजना-y – Carcigenicate

+0

दिखता है यह smt2 है, किसी भी एपीआई के बिना Z3 का सामान्य इनपुट। इसे incre4fun.com/Z3 देखें। – mmpourhashem

+0

मैंने सी एपीआई कोड का उपयोग कर पैरामीटर से ऊपर की कोशिश की ... cfg = Z3_mk_config(); Z3_set_param_value (cfg, "मॉडल", "सच"); Z3_set_param_value (cfg, "समय समाप्त", TIME_OUT); Z3_set_param_value (सीएफजी, "SMT.ARITH.RANDOM_INITIAL_VALUE", "सत्य"); Z3_set_param_value (cfg, "RANDOM_SEED", "1"); solver = Z3_mk_context (cfg); ... दुर्भाग्य से मैं इसे काम नहीं कर सका। जब मैं कोड चलाता हूं, तो मुझे इस तरह की चेतावनी मिलती है ... चेतावनी: अज्ञात पैरामीटर 'smt.arith.random_initial_value' चेतावनी: अज्ञात पैरामीटर 'random_seed' कोई विचार जहां मैंने गलत किया है? –

संबंधित मुद्दे